// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package main

// ModuleConfig represents a module.
var moduleConfigs = []string{
	"accessapproval",
	"accesscontextmanager",
	"aiplatform",
	"analytics",
	"apigateway",
	"apigeeconnect",
	"apigeeregistry",
	"apikeys",
	"appengine",
	"area120",
	"artifactregistry",
	"asset",
	"assuredworkloads",
	"automl",
	"baremetalsolution",
	"batch",
	"beyondcorp",
	"bigquery",
	"bigtable",
	"billing",
	"binaryauthorization",
	"certificatemanager",
	"channel",
	"cloudbuild",
	"clouddms",
	"cloudtasks",
	"compute",
	"contactcenterinsights",
	"container",
	"containeranalysis",
	"datacatalog",
	"dataflow",
	"dataform",
	"datafusion",
	"datalabeling",
	"dataplex",
	"dataproc",
	"dataqna",
	"datastore",
	"datastream",
	"deploy",
	"dialogflow",
	"dlp",
	"documentai",
	"domains",
	"edgecontainer",
	"errorreporting",
	"essentialcontacts",
	"eventarc",
	"filestore",
	"firestore",
	"functions",
	"gaming",
	"gkebackup",
	"gkeconnect",
	"gkehub",
	"gkemulticloud",
	"grafeas",
	"gsuiteaddons",
	"iam",
	"iap",
	"ids",
	"iot",
	"kms",
	"language",
	"lifesciences",
	"logging",
	"longrunning",
	"managedidentities",
	"maps",
	"mediatranslation",
	"memcache",
	"metastore",
	"monitoring",
	"networkconnectivity",
	"networkmanagement",
	"networksecurity",
	"notebooks",
	"optimization",
	"orchestration",
	"orgpolicy",
	"osconfig",
	"oslogin",
	"phishingprotection",
	"policytroubleshooter",
	"privatecatalog",
	"profiler",
	"pubsub",
	"pubsublite",
	"recaptchaenterprise",
	"recaptchaenterprise/v2",
	"recommendationengine",
	"recommender",
	"redis",
	"resourcemanager",
	"resourcesettings",
	"retail",
	"run",
	"scheduler",
	"secretmanager",
	"security",
	"securitycenter",
	"servicecontrol",
	"servicedirectory",
	"servicemanagement",
	"serviceusage",
	"shell",
	"spanner",
	"speech",
	"storagetransfer",
	"talent",
	"texttospeech",
	"tpu",
	"trace",
	"translate",
	"video",
	"videointelligence",
	"vision",
	"vision/v2",
	"vmmigration",
	"vmwareengine",
	"vpcaccess",
	"webrisk",
	"websecurityscanner",
	"workflows",
}
