{
  "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 a