{
  "repo": "tidbcloud/core-portal",
  "binary": "server",
  "binary_path": "cmd/server/main.go",
  "surface_kind": "mixed_service",
  "type": "mixed_service",
  "services": [
    {
      "name": "ServerLifecycle",
      "type": "lifecycle",
      "methods": [
        {"name": "ParseFlags", "name_key": "ServerLifecycle.ParseFlags", "description": "Parse the config-path flag used to load the central service configuration."},
        {"name": "InitConfig", "name_key": "ServerLifecycle.InitConfig", "description": "Load the server configuration from the selected config file."},
        {"name": "SetupLoggerAndSentry", "name_key": "ServerLifecycle.SetupLoggerAndSentry", "description": "Initialize Sentry and the global zap logger before the runtime starts."},
        {"name": "InitK8sAndInfraClients", "name_key": "ServerLifecycle.InitK8sAndInfraClients", "description": "Build the gardener Kubernetes clients and initialize the infra-api wrapper."},
        {"name": "InitDatabaseAndSecrets", "name_key": "ServerLifecycle.InitDatabaseAndSecrets", "description": "Initialize the global MySQL connection, secret encryptors, and mail providers."},
        {"name": "InitAuthAndModels", "name_key": "ServerLifecycle.InitAuthAndModels", "description": "Warm up JWKS/token validators and construct the central service models."},
        {"name": "InitTracing", "name_key": "ServerLifecycle.InitTracing", "description": "Initialize distributed tracing for the core-portal runtime."},
        {"name": "StartOptionalWorkers", "name_key": "ServerLifecycle.StartOptionalWorkers", "description": "Start the background worker manager only when the WORKER role is enabled."},
        {"name": "StartMetricsListener", "name_key": "ServerLifecycle.StartMetricsListener", "description": "Register Prometheus metrics and pprof handlers and start the separate metrics listener when configured."},
        {"name": "StartHealthOnlyServer", "name_key": "ServerLifecycle.StartHealthOnlyServer", "description": "Start the minimal :11000 health and version server when API_SERVICE is disabled."},
        {"name": "BuildGRPCServer", "name_key": "ServerLifecycle.BuildGRPCServer", "description": "Create the gRPC server and install auth, validation, rate-limit, logging, tracing, Sentry, and recovery middleware."},
        {"name": "RegisterGRPCServices", "name_key": "ServerLifecycle.RegisterGRPCServices", "description": "Register the central, core, and OpenAPI gRPC services on the shared server."},
        {"name": "StartGRPCServer", "name_key": "ServerLifecycle.StartGRPCServer", "description": "Start the dedicated gRPC listener on the configured gRPC port."},
        {"name": "BuildHTTPGateway", "name_key": "ServerLifecycle.BuildHTTPGateway", "description": "Build the grpc-gateway Gin engine for the central and OpenAPI HTTP transport."},
        {"name": "ConfigureTenantProxy", "name_key": "ServerLifecycle.ConfigureTenantProxy", "description": "Attach the /proxy route with auth, debug-session, CORS, path-rewrite, and forbid-list middleware."},
        {"name": "SetupAdminAPI", "name_key": "ServerLifecycle.SetupAdminAPI", "description": "Initialize the management-portal token validator, admin model, and admin HTTP routes."},
        {"name": "StartHTTPGateway", "name_key": "ServerLifecycle.StartHTTPGateway", "description": "Start the main HTTP gateway on :11000."}
      ]
    },
    {
      "name": "ClusterService",
      "package": "central",
      "methods": [
        {"name": "ListCloudProvidersV2", "name_key": "ClusterService.ListCloudProvidersV2", "input": "ListCloudProvidersReq", "output": "CloudProviders"},
        {"name": "CalcNodeProfilesV2", "name_key": "ClusterService.CalcNodeProfilesV2", "input": "CalcNodeProfilesReq", "output": "CalcNodeProfilesResp"},
        {"name": "GenClusterName", "name_key": "ClusterService.GenClusterName", "input": "GenClusterNameReq", "output": "GenClusterNameResp"},
        {"name": "CreateClusterV2", "name_key": "ClusterService.CreateClusterV2", "input": "CreateClusterReq", "output": "CreateClusterResp"},
        {"name": "ScaleClusterV2", "name_key": "ClusterService.ScaleClusterV2", "input": "ScaleClusterReq", "output": "DefaultResp"},
        {"name": "PauseCluster", "name_key": "ClusterService.PauseCluster", "input": "ClusterIdReq", "output": "DefaultResp"},
        {"name": "ResumeCluster", "name_key": "ClusterService.ResumeCluster", "input": "ClusterIdReq", "output": "DefaultResp"},
        {"name": "CalcClusterFee", "name_key": "ClusterService.CalcClusterFee", "input": "CalcClusterFeeReq", "output": "CalcClusterFeeResp"},
        {"name": "Get", "name_key": "ClusterService.Get", "input": "ClusterGetReq", "output": "GetClusterResp"},
        {"name": "GetTiDBNodes", "name_key": "ClusterService.GetTiDBNodes", "input": "TiDBNodesReq", "output": "TiDBNodes"},
        {"name": "GetTiKVNodes", "name_key": "ClusterService.GetTiKVNodes", "input": "TiKVNodesReq", "output": "TiKVNodes"},
        {"name": "GetTiFlashNodes", "name_key": "ClusterService.GetTiFlashNodes", "input": "TiFlashNodesReq", "output": "TiFlashNodes"},
        {"name": "List", "name_key": "ClusterService.List", "input": "ClusterListReq", "output": "Clusters"},
        {"name": "ListDeletedClusters", "name_key": "ClusterService.ListDeletedClusters", "input": "ClusterListReq", "output": "DeletedClusters"},
        {"name": "Delete", "name_key": "ClusterService.Delete", "input": "ClusterIdReq", "output": "DefaultResp"},
        {"name": "ChangePassword", "name_key": "ClusterService.ChangePassword", "input": "ChangePasswordReq", "output": "DefaultResp"},
        {"name": "ChangeClusterName", "name_key": "ClusterService.ChangeClusterName", "input": "ChangeClusterNameReq", "output": "google.protobuf.Empty"},
        {"name": "MakeClusterWritable", "name_key": "ClusterService.MakeClusterWritable", "input": "MakeClusterWritableReq", "output": "google.protobuf.Empty"},
        {"name": "CreateAWSVpcPeering", "name_key": "ClusterService.CreateAWSVpcPeering", "input": "CreateAWSVpcPeeringReq", "output": "CreateAWSVpcPeeringResp"},
        {"name": "CreateGcpVpcPeering", "name_key": "ClusterService.CreateGcpVpcPeering", "input": "CreateGcpVpcPeeringReq", "output": "CreateGcpVpcPeeringResp"},
        {"name": "ListAwsVpcPeerings", "name_key": "ClusterService.ListAwsVpcPeerings", "input": "ProjectIdReq", "output": "AwsVpcPeerings"},
        {"name": "ListGcpVpcPeerings", "name_key": "ClusterService.ListGcpVpcPeerings", "input": "ProjectIdReq", "output": "GcpVpcPeerings"},
        {"name": "GetAwsVpcPeering", "name_key": "ClusterService.GetAwsVpcPeering", "input": "VpcpeeringID", "output": "AwsVpcPeering"},
        {"name": "GetGcpVpcPeering", "name_key": "ClusterService.GetGcpVpcPeering", "input": "VpcpeeringID", "output": "GcpVpcPeering"},
        {"name": "DeleteAwsVpcPeering", "name_key": "ClusterService.DeleteAwsVpcPeering", "input": "VpcpeeringID", "output": "google.protobuf.Empty"},
        {"name": "DeleteGcpVpcPeering", "name_key": "ClusterService.DeleteGcpVpcPeering", "input": "VpcpeeringID", "output": "google.protobuf.Empty"},
        {"name": "CreatePrivateEndpoint", "name_key": "ClusterService.CreatePrivateEndpoint", "input": "ClusterIdReq", "output": "google.protobuf.Empty"},
        {"name": "CreatePrivateLinkService", "name_key": "ClusterService.CreatePrivateLinkService", "input": "CreatePrivateLinkServiceReq", "output": "CreatePrivateLinkServiceResp"},
        {"name": "DeletePrivateLinkService", "name_key": "ClusterService.DeletePrivateLinkService", "input": "DeletePrivateLinkServiceReq", "output": "DefaultResp"},
        {"name": "GetPrivateLinkService", "name_key": "ClusterService.GetPrivateLinkService", "input": "GetPrivateLinkServiceReq", "output": "GetPrivateLinkServiceResp"},
        {"name": "ListPrivateLinkEndpointsOfProject", "name_key": "ClusterService.ListPrivateLinkEndpointsOfProject", "input": "ListPrivateLinkEndpointsOfProjectReq", "output": "ListPrivateLinkEndpointsOfProjectResp"},
        {"name": "CreatePrivateLinkEndpoint", "name_key": "ClusterService.CreatePrivateLinkEndpoint", "input": "CreatePrivateLinkEndpointReq", "output": "CreatePrivateLinkEndpointResp"},
        {"name": "DeletePrivateLinkEndpoint", "name_key": "ClusterService.DeletePrivateLinkEndpoint", "input": "DeletePrivateLinkEndpointReq", "output": "DefaultResp"},
        {"name": "GetTrafficFilter", "name_key": "ClusterService.GetTrafficFilter", "input": "ClusterIdReq", "output": "TrafficFilterResp"},
        {"name": "UpdateTrafficFilter", "name_key": "ClusterService.UpdateTrafficFilter", "input": "UpdateTrafficFilterReq", "output": "UpdateTrafficFilterResp"},
        {"name": "GetPrivateEndpoint", "name_key": "ClusterService.GetPrivateEndpoint", "input": "ClusterIdReq", "output": "GetPrivateEndpointResp"},
        {"name": "GetProjectCIDR", "name_key": "ClusterService.GetProjectCIDR", "input": "GetCIDRReq", "output": "ProjectCIDR"},
        {"name": "GetProjectCIDRWithoutRegion", "name_key": "ClusterService.GetProjectCIDRWithoutRegion", "input": "GetCIDRReq", "output": "ProjectCIDR"},
        {"name": "CreateProjectCIDR", "name_key": "ClusterService.CreateProjectCIDR", "input": "CreateProjectCIDRReq", "output": "ProjectCIDR"},
        {"name": "ValidateProjectCIDR", "name_key": "ClusterService.ValidateProjectCIDR", "input": "CreateProjectCIDRReq", "output": "google.protobuf.Empty"},
        {"name": "GetProjectRegionCIDR", "name_key": "ClusterService.GetProjectRegionCIDR", "input": "GetProjectRegionCIDRReq", "output": "GetProjectRegionCIDRResp"},
        {"name": "GetAuditLogStatus", "name_key": "ClusterService.GetAuditLogStatus", "input": "GetAuditLogStatusReq", "output": "GetAuditLogStatusResp"},
        {"name": "UpdateAuditLogStatus", "name_key": "ClusterService.UpdateAuditLogStatus", "input": "UpdateAuditLogStatusReq", "output": "UpdateAuditLogStatusResp"},
        {"name": "PrecheckAuditLogConfig", "name_key": "ClusterService.PrecheckAuditLogConfig", "input": "PrecheckAuditLogConfigReq", "output": "PrecheckAuditLogConfigResp"},
        {"name": "CheckAuditLogPluginStatus", "name_key": "ClusterService.CheckAuditLogPluginStatus", "input": "CheckAuditLogPluginStatusReq", "output": "CheckAuditLogPluginStatusResp"},
        {"name": "GetAuditLogAccessRecords", "name_key": "ClusterService.GetAuditLogAccessRecords", "input": "GetAuditLogAccessRecordsReq", "output": "GetAuditLogAccessRecordsResp"},
        {"name": "CreateAuditLogAccessRecord", "name_key": "ClusterService.CreateAuditLogAccessRecord", "input": "CreateAuditLogAccessRecordReq", "output": "CreateAuditLogAccessRecordResp"},
        {"name": "DeleteAuditLogAccessRecord", "name_key": "ClusterService.DeleteAuditLogAccessRecord", "input": "DeleteAuditLogAccessRecordReq", "output": "DeleteAuditLogAccessRecordResp"},
        {"name": "GetClusterCACertificate", "name_key": "ClusterService.GetClusterCACertificate", "input": "GetClusterCACertificateReq", "output": "GetClusterCACertificateResp"},
        {"name": "GetProjectMaintenanceWindow", "name_key": "ClusterService.GetProjectMaintenanceWindow", "input": "GetProjectMaintenanceWindowReq", "output": "GetProjectMaintenanceWindowResp"},
        {"name": "UpdateProjectMaintenanceWindow", "name_key": "ClusterService.UpdateProjectMaintenanceWindow", "input": "UpdateProjectMaintenanceWindowReq", "output": "UpdateProjectMaintenanceWindowResp"},
        {"name": "ListProjectMaintenanceTasks", "name_key": "ClusterService.ListProjectMaintenanceTasks", "input": "ListProjectMaintenanceTasksReq", "output": "ListProjectMaintenanceTasksResp"},
        {"name": "DeferMaintenanceTask", "name_key": "ClusterService.DeferMaintenanceTask", "input": "DeferMaintenanceTaskReq", "output": "DefaultResp"},
        {"name": "GetProjectAWSAccount", "name_key": "ClusterService.GetProjectAWSAccount", "input": "GetAWSAccountReq", "output": "ProjectAWSAccount"},
        {"name": "CreateAwsCmek", "name_key": "ClusterService.CreateAwsCmek", "input": "CreateAwsCmekReq", "output": "CreateAwsCmekResp"},
        {"name": "GetAwsCmek", "name_key": "ClusterService.GetAwsCmek", "input": "GetAwsCmekReq", "output": "GetAwsCmekResp"},
        {"name": "CreateCidr", "name_key": "ClusterService.CreateCidr", "input": "CreateCidrRequest", "output": "CreateCidrResponse"},
        {"name": "ListCidrs", "name_key": "ClusterService.ListCidrs", "input": "ListCidrsRequest", "output": "ListCidrsResponse"},
        {"name": "GetCidr", "name_key": "ClusterService.GetCidr", "input": "GetCidrRequest", "output": "GetCidrResponse"},
        {"name": "UpdateCidr", "name_key": "ClusterService.UpdateCidr", "input": "UpdateCidrRequest", "output": "UpdateCidrResponse"},
        {"name": "DeleteCidr", "name_key": "ClusterService.DeleteCidr", "input": "DeleteCidrRequest", "output": "DefaultResp"},
        {"name": "GetDefaultCidr", "name_key": "ClusterService.GetDefaultCidr", "input": "GetDefaultCidrRequest", "output": "GetDefaultCidrResponse"},
        {"name": "ListAccesspoints", "name_key": "ClusterService.ListAccesspoints", "input": "ListAccesspointsReq", "output": "ListAccesspointsResp"},
        {"name": "GetThreeArch", "name_key": "ClusterService.GetThreeArch", "input": "GetThreeArchReq", "output": "GetThreeArchResp"}
      ]
    },
    {
      "name": "TenantService",
      "package": "central",
      "methods": [
        {"name": "CreateIamRole", "name_key": "TenantService.CreateIamRole", "input": "CreateIamRoleReq", "output": "CreateIamRoleResp"},
        {"name": "ListIamRoles", "name_key": "TenantService.ListIamRoles", "input": "ListIamRolesReq", "output": "ListIamRolesResp"},
        {"name": "DeleteIamRole", "name_key": "TenantService.DeleteIamRole", "input": "DeleteIamRoleReq", "output": "DefaultResp"},
        {"name": "CreateCrossAccountDeployment", "name_key": "TenantService.CreateCrossAccountDeployment", "input": "CreateCrossAccountDeploymentReq", "output": "CreateCrossAccountDeploymentResp"},
        {"name": "ListCrossAccountDeployments", "name_key": "TenantService.ListCrossAccountDeployments", "input": "ListCrossAccountDeploymentsReq", "output": "ListCrossAccountDeploymentResp"},
        {"name": "DeleteCrossAccountDeployment", "name_key": "TenantService.DeleteCrossAccountDeployment", "input": "DeleteCrossAccountDeploymentReq", "output": "DefaultResp"},
        {"name": "GetTiDBCloudDelegationInfo", "name_key": "TenantService.GetTiDBCloudDelegationInfo", "input": "GetTiDBCloudDelegationInfoReq", "output": "GetTiDBCloudDelegationInfoResp"}
      ]
    },
    {
      "name": "TestTokenService",
      "package": "central",
      "methods": [
        {"name": "GenerateTestToken", "name_key": "TestTokenService.GenerateTestToken", "input": "GenerateTestTokenReq", "output": "GenerateTestTokenResp"}
      ]
    },
    {
      "name": "CoreService",
      "package": "core",
      "methods": [
        {"name": "SyncInfraProfile", "name_key": "CoreService.SyncInfraProfile", "input": "SyncInfraProfileReq", "output": "SyncInfraProfileResp"},
        {"name": "CheckSkuSynced", "name_key": "CoreService.CheckSkuSynced", "input": "CheckSkuSyncedReq", "output": "CheckSkuSyncedResp"},
        {"name": "UpsertProfileByYaml", "name_key": "CoreService.UpsertProfileByYaml", "input": "UpsertProfileByYamlReq", "output": "UpsertProfileByYamlResp"},
        {"name": "ListNodeProfiles4Tenant", "name_key": "CoreService.ListNodeProfiles4Tenant", "input": "ListNodeProfiles4TenantReq", "output": "ListNodeProfiles4TenantResp"},
        {"name": "BatchGetTiers", "name_key": "CoreService.BatchGetTiers", "input": "BatchGetTiersReq", "output": "BatchGetTiersResp"},
        {"name": "ListCloudProviders", "name_key": "CoreService.ListCloudProviders", "input": "ListCloudProvidersReq", "output": "ListCloudProvidersResp"},
        {"name": "QueryCloudProviders", "name_key": "CoreService.QueryCloudProviders", "input": "QueryCloudProvidersReq", "output": "QueryCloudProvidersResp"},
        {"name": "ListCloudRegions", "name_key": "CoreService.ListCloudRegions", "input": "ListCloudRegionsReq", "output": "ListCloudRegionsResp"},
        {"name": "CreateIamRole", "name_key": "CoreService.CreateIamRole", "input": "CreateIamRoleReq", "output": "CreateIamRoleResp"},
        {"name": "DeleteIamRole", "name_key": "CoreService.DeleteIamRole", "input": "DeleteIamRoleReq", "output": "DeleteIamRoleResp"},
        {"name": "ListIamRoles", "name_key": "CoreService.ListIamRoles", "input": "ListIamRolesReq", "output": "ListIamRolesResp"},
        {"name": "CreateAwsCmek", "name_key": "CoreService.CreateAwsCmek", "input": "CreateAwsCmekReq", "output": "CreateAwsCmekResp"},
        {"name": "GetAwsCmek", "name_key": "CoreService.GetAwsCmek", "input": "GetAwsCmekReq", "output": "GetAwsCmekResp"},
        {"name": "GetAwsAccount", "name_key": "CoreService.GetAwsAccount", "input": "GetAwsAccountReq", "output": "GetAwsAccountResp"},
        {"name": "GetClusterName", "name_key": "CoreService.GetClusterName", "input": "GetClusterNameReq", "output": "GetClusterNameResp"},
        {"name": "ChangeClusterPasswd", "name_key": "CoreService.ChangeClusterPasswd", "input": "ChangeClusterPasswdReq", "output": "ChangeClusterPasswdResp"},
        {"name": "UpdateClusterTrafficFilter", "name_key": "CoreService.UpdateClusterTrafficFilter", "input": "UpdateClusterTrafficFilterReq", "output": "UpdateClusterTrafficFilterResp"},
        {"name": "CreateCluster", "name_key": "CoreService.CreateCluster", "input": "CreateClusterReq", "output": "CreateClusterResp"},
        {"name": "DeleteCluster", "name_key": "CoreService.DeleteCluster", "input": "DeleteClusterReq", "output": "DeleteClusterResp"},
        {"name": "CreateClusterSnapshot", "name_key": "CoreService.CreateClusterSnapshot", "input": "CreateClusterSnapshotReq", "output": "CreateClusterSnapshotResp"},
        {"name": "ListClusterSnapshots", "name_key": "CoreService.ListClusterSnapshots", "input": "ListClusterSnapshotsReq", "output": "ListClusterSnapshotsResp"},
        {"name": "ScaleCluster", "name_key": "CoreService.ScaleCluster", "input": "ScaleClusterReq", "output": "ScaleClusterResp"},
        {"name": "PauseCluster", "name_key": "CoreService.PauseCluster", "input": "PauseClusterReq", "output": "PauseClusterResp"},
        {"name": "ResumeCluster", "name_key": "CoreService.ResumeCluster", "input": "ResumeClusterReq", "output": "ResumeClusterResp"},
        {"name": "ClearCluster", "name_key": "CoreService.ClearCluster", "input": "ClearClusterReq", "output": "ClearClusterResp"},
        {"name": "SetClusterReadonly", "name_key": "CoreService.SetClusterReadonly", "input": "SetClusterReadonlyReq", "output": "SetClusterReadonlyResp"},
        {"name": "CalcClusterFee", "name_key": "CoreService.CalcClusterFee", "input": "CalcClusterFeeReq", "output": "CalcClusterFeeResp"},
        {"name": "ListClusters", "name_key": "CoreService.ListClusters", "input": "ListClustersReq", "output": "ListClustersResp"},
        {"name": "CountClusters", "name_key": "CoreService.CountClusters", "input": "CountClustersReq", "output": "CountClustersResp"},
        {"name": "GetClusterConfidentialInfo", "name_key": "CoreService.GetClusterConfidentialInfo", "input": "GetClusterConfidentialInfoReq", "output": "GetClusterConfidentialInfoResp"},
        {"name": "CreateXAccountDeploy", "name_key": "CoreService.CreateXAccountDeploy", "input": "CreateXAccountDeployReq", "output": "CreateXAccountDeployResp"},
        {"name": "ListXAccountDeploy", "name_key": "CoreService.ListXAccountDeploy", "input": "ListXAccountDeployReq", "output": "ListXAccountDeployResp"},
        {"name": "DeleteXAccountDeploy", "name_key": "CoreService.DeleteXAccountDeploy", "input": "DeleteXAccountDeployReq", "output": "DeleteXAccountDeployResp"},
        {"name": "GetClusterCACertificate", "name_key": "CoreService.GetClusterCACertificate", "input": "GetClusterCACertificateReq", "output": "GetClusterCACertificateResp"},
        {"name": "ListRegionCIDROfProject", "name_key": "CoreService.ListRegionCIDROfProject", "input": "ListRegionCIDROfProjectReq", "output": "ListRegionCIDROfProjectResp"},
        {"name": "CreateClusterConn", "name_key": "CoreService.CreateClusterConn", "input": "CreateClusterConnReq", "output": "CreateClusterConnResp"},
        {"name": "CreateNetworkPeer", "name_key": "CoreService.CreateNetworkPeer", "input": "CreateNetworkPeerReq", "output": "CreateNetworkPeerResp"},
        {"name": "DeleteNetworkPeer", "name_key": "CoreService.DeleteNetworkPeer", "input": "DeleteNetworkPeerReq", "output": "DeleteNetworkPeerResp"},
        {"name": "ListNetworkPeer", "name_key": "CoreService.ListNetworkPeer", "input": "ListNetworkPeerReq", "output": "ListNetworkPeerResp"},
        {"name": "CreatePrivateLinkService", "name_key": "CoreService.CreatePrivateLinkService", "input": "CreatePrivateLinkServiceReq", "output": "CreatePrivateLinkServiceResp"},
        {"name": "DeletePrivateLinkService", "name_key": "CoreService.DeletePrivateLinkService", "input": "DeletePrivateLinkServiceReq", "output": "DeletePrivateLinkServiceResp"},
        {"name": "GetPrivateLinkService", "name_key": "CoreService.GetPrivateLinkService", "input": "GetPrivateLinkServiceReq", "output": "GetPrivateLinkServiceResp"},
        {"name": "CreatePrivateLinkEndpoint", "name_key": "CoreService.CreatePrivateLinkEndpoint", "input": "CreatePrivateLinkEndpointReq", "output": "CreatePrivateLinkEndpointResp"},
        {"name": "DeletePrivateLinkEndpoint", "name_key": "CoreService.DeletePrivateLinkEndpoint", "input": "DeletePrivateLinkEndpointReq", "output": "DeletePrivateLinkEndpointResp"},
        {"name": "ListPrivateLinkEndpoints", "name_key": "CoreService.ListPrivateLinkEndpoints", "input": "ListPrivateLinkEndpointsReq", "output": "ListPrivateLinkEndpointsResp"},
        {"name": "CleanClusters", "name_key": "CoreService.CleanClusters", "input": "CleanClustersReq", "output": "CleanClustersResp"},
        {"name": "CleanProjectResource", "name_key": "CoreService.CleanProjectResource", "input": "CleanProjectResourceReq", "output": "CleanProjectResourceResp"},
        {"name": "CleanTenantResource", "name_key": "CoreService.CleanTenantResource", "input": "CleanTenantResourceReq", "output": "CleanTenantResourceResp"},
        {"name": "CreateDBUser", "name_key": "CoreService.CreateDBUser", "input": "CreateDBUserReq", "output": "CreateDBUserResp"},
        {"name": "UpdateDBUser", "name_key": "CoreService.UpdateDBUser", "input": "UpdateDBUserReq", "output": "UpdateDBUserResp"},
        {"name": "DeleteDBUser", "name_key": "CoreService.DeleteDBUser", "input": "DeleteDBUserReq", "output": "DeleteDBUserResp"},
        {"name": "GetDBUser", "name_key": "CoreService.GetDBUser", "input": "GetDBUserReq", "output": "GetDBUserResp"},
        {"name": "IsDBUserExisting", "name_key": "CoreService.IsDBUserExisting", "input": "IsDBUserExistingReq", "output": "IsDBUserExistingResp"},
        {"name": "CreateDBRole", "name_key": "CoreService.CreateDBRole", "input": "CreateDBRoleReq", "output": "CreateDBRoleResp"},
        {"name": "UpdateDBRole", "name_key": "CoreService.UpdateDBRole", "input": "UpdateDBRoleReq", "output": "UpdateDBRoleResp"},
        {"name": "ListDBUsers", "name_key": "CoreService.ListDBUsers", "input": "ListDBUsersReq", "output": "ListDBUsersResp"},
        {"name": "SetClusterAuthPubKey", "name_key": "CoreService.SetClusterAuthPubKey", "input": "SetClusterAuthPubKeyReq", "output": "SetClusterAuthPubKeyResp"},
        {"name": "CreateClusterJob", "name_key": "CoreService.CreateClusterJob", "input": "CreateClusterJobReq", "output": "CreateClusterJobResp"},
        {"name": "DeleteClusterJob", "name_key": "CoreService.DeleteClusterJob", "input": "DeleteClusterJobReq", "output": "DeleteClusterJobResp"},
        {"name": "IsClusterJobRegistered", "name_key": "CoreService.IsClusterJobRegistered", "input": "IsClusterJobRegisteredReq", "output": "IsClusterJobRegisteredResp"},
        {"name": "ListClusterJobs", "name_key": "CoreService.ListClusterJobs", "input": "ListClusterJobsReq", "output": "ListClusterJobsResp"},
        {"name": "GetMaintenanceWindowByProjectID", "name_key": "CoreService.GetMaintenanceWindowByProjectID", "input": "GetMaintenanceWindowByProjectIDReq", "output": "GetMaintenanceWindowByProjectIDResp"},
        {"name": "UpdateMaintenanceWindow", "name_key": "CoreService.UpdateMaintenanceWindow", "input": "UpdateMaintenanceWindowReq", "output": "UpdateMaintenanceWindowResp"},
        {"name": "CreateMaintenanceTask", "name_key": "CoreService.CreateMaintenanceTask", "input": "CreateMaintenanceTaskReq", "output": "CreateMaintenanceTaskResp"},
        {"name": "QueryMaintenanceTasks", "name_key": "CoreService.QueryMaintenanceTasks", "input": "QueryMaintenanceTasksReq", "output": "QueryMaintenanceTasksResp"},
        {"name": "CountMaintenanceTasks", "name_key": "CoreService.CountMaintenanceTasks", "input": "CountMaintenanceTasksReq", "output": "CountMaintenanceTasksResp"},
        {"name": "DeferMaintenanceTask", "name_key": "CoreService.DeferMaintenanceTask", "input": "DeferMaintenanceTaskReq", "output": "DeferMaintenanceTaskResp"},
        {"name": "UpdateMaintenanceTaskStatus", "name_key": "CoreService.UpdateMaintenanceTaskStatus", "input": "UpdateMaintenanceTaskStatusReq", "output": "UpdateMaintenanceTaskStatusResp"},
        {"name": "QueryMaintenanceTaskExecutions", "name_key": "CoreService.QueryMaintenanceTaskExecutions", "input": "QueryMaintenanceTaskExecutionsReq", "output": "QueryMaintenanceTaskExecutionsResp"},
        {"name": "UpdateMaintenanceTaskExecutionStatus", "name_key": "CoreService.UpdateMaintenanceTaskExecutionStatus", "input": "UpdateMaintenanceTaskExecutionStatusReq", "output": "UpdateMaintenanceTaskExecutionStatusResp"},
        {"name": "SyncMaintenanceWindow", "name_key": "CoreService.SyncMaintenanceWindow", "input": "SyncMaintenanceWindowReq", "output": "SyncMaintenanceWindowResp"},
        {"name": "GetClusterTopology", "name_key": "CoreService.GetClusterTopology", "input": "GetClusterTopologyReq", "output": "GetClusterTopologyResp"},
        {"name": "ExecuteCtlCommand", "name_key": "CoreService.ExecuteCtlCommand", "input": "ExecuteCtlCommandReq", "output": "ExecuteCtlCommandResp"},
        {"name": "ListTenantQuota", "name_key": "CoreService.ListTenantQuota", "input": "ListTenantQuotaReq", "output": "ListTenantQuotaResp"},
        {"name": "UpdateTenantQuota", "name_key": "CoreService.UpdateTenantQuota", "input": "UpdateTenantQuotaReq", "output": "UpdateTenantQuotaResp"},
        {"name": "CreateAccessPoint", "name_key": "CoreService.CreateAccessPoint", "input": "CreateAccessPointReq", "output": "CreateAccessPointResp"},
        {"name": "UpdateAccessPoint", "name_key": "CoreService.UpdateAccessPoint", "input": "UpdateAccessPointReq", "output": "UpdateAccessPointResp"},
        {"name": "DeleteAccessPoint", "name_key": "CoreService.DeleteAccessPoint", "input": "DeleteAccessPointReq", "output": "DeleteAccessPointResp"},
        {"name": "ListAccessPointPrivateLinkEndpoints", "name_key": "CoreService.ListAccessPointPrivateLinkEndpoints", "input": "ListAccessPointPrivateLinkEndpointsReq", "output": "ListAccessPointPrivateLinkEndpointsResp"},
        {"name": "QueryAccessPoints", "name_key": "CoreService.QueryAccessPoints", "input": "QueryAccessPointsReq", "output": "QueryAccessPointsResp"},
        {"name": "CreateCidr", "name_key": "CoreService.CreateCidr", "input": "CreateCidrRequest", "output": "CreateCidrResponse"},
        {"name": "QueryCidrs", "name_key": "CoreService.QueryCidrs", "input": "QueryCidrsRequest", "output": "QueryCidrsResponse"},
        {"name": "UpdateCidr", "name_key": "CoreService.UpdateCidr", "input": "UpdateCidrRequest", "output": "UpdateCidrResponse"},
        {"name": "DeleteCidr", "name_key": "CoreService.DeleteCidr", "input": "DeleteCidrRequest", "output": "DeleteCidrResponse"},
        {"name": "GetDefaultCidr", "name_key": "CoreService.GetDefaultCidr", "input": "GetDefaultCidrRequest", "output": "GetDefaultCidrResponse"},
        {"name": "SimulatedSelectTierUnit", "name_key": "CoreService.SimulatedSelectTierUnit", "input": "ScaleClusterReq", "output": "SimulatedSelectTierUnitResponse"},
        {"name": "CountBillableClusters", "name_key": "CoreService.CountBillableClusters", "input": "CountBillableClustersReq", "output": "CountBillableClustersResp"}
      ]
    },
    {
      "name": "Cluster",
      "package": "cm (openapi)",
      "type": "http_api",
      "methods": [
        {"name": "GetCluster", "name_key": "Cluster.GetCluster", "input": "GetClusterReq", "output": "ClusterItem"},
        {"name": "ListClustersOfProject", "name_key": "Cluster.ListClustersOfProject", "input": "ListClustersOfProjectReq", "output": "ListClustersOfProjectResp"},
        {"name": "CreateCluster", "name_key": "Cluster.CreateCluster", "input": "CreateClusterReq", "output": "CreateClusterResp"},
        {"name": "UpdateCluster", "name_key": "Cluster.UpdateCluster", "input": "UpdateClusterReq", "output": "google.protobuf.Empty"},
        {"name": "DeleteCluster", "name_key": "Cluster.DeleteCluster", "input": "DeleteClusterReq", "output": "google.protobuf.Empty"},
        {"name": "ListProviderRegions", "name_key": "Cluster.ListProviderRegions", "input": "google.protobuf.Empty", "output": "ListProviderRegionsResp"},
        {"name": "CreateAwsCmek", "name_key": "Cluster.CreateAwsCmek", "input": "CreateAwsCmekReq", "output": "google.protobuf.Empty"},
        {"name": "ListAwsCmek", "name_key": "Cluster.ListAwsCmek", "input": "ListAwsCmekReq", "output": "ListAwsCmekResp"},
        {"name": "CreatePrivateEndpointService", "name_key": "Cluster.CreatePrivateEndpointService", "input": "CreatePrivateEndpointServiceReq", "output": "CreatePrivateEndpointServiceResp"},
        {"name": "GetPrivateEndpointService", "name_key": "Cluster.GetPrivateEndpointService", "input": "GetPrivateEndpointServiceReq", "output": "GetPrivateEndpointServiceResp"},
        {"name": "ListPrivateEndpointsOfProject", "name_key": "Cluster.ListPrivateEndpointsOfProject", "input": "ListPrivateEndpointsOfProjectReq", "output": "ListPrivateEndpointsOfProjectResp"},
        {"name": "CreatePrivateEndpoint", "name_key": "Cluster.CreatePrivateEndpoint", "input": "CreatePrivateEndpointReq", "output": "CreatePrivateEndpointResp"},
        {"name": "ListPrivateEndpoints", "name_key": "Cluster.ListPrivateEndpoints", "input": "ListPrivateEndpointsReq", "output": "ListPrivateEndpointsResp"},
        {"name": "DeletePrivateEndpoint", "name_key": "Cluster.DeletePrivateEndpoint", "input": "DeletePrivateEndpointReq", "output": "google.protobuf.Empty"},
        {"name": "CreateAccesspoint", "name_key": "Cluster.CreateAccesspoint", "input": "CreateAccesspointReq", "output": "CreateAccesspointResp"},
        {"name": "GetAccesspoint", "name_key": "Cluster.GetAccesspoint", "input": "GetAccesspointReq", "output": "Accesspoint"},
        {"name": "ListAccesspoints", "name_key": "Cluster.ListAccesspoints", "input": "ListAccesspointsReq", "output": "ListAccesspointsResp"},
        {"name": "UpdateAccesspoint", "name_key": "Cluster.UpdateAccesspoint", "input": "UpdateAccesspointReq", "output": "google.protobuf.Empty"},
        {"name": "DeleteAccesspoint", "name_key": "Cluster.DeleteAccesspoint", "input": "DeleteAccesspointReq", "output": "google.protobuf.Empty"},
        {"name": "CreatePrivateLinkEndpoint", "name_key": "Cluster.CreatePrivateLinkEndpoint", "input": "CreatePrivateLinkEndpointReq", "output": "CreatePrivateLinkEndpointResp"},
        {"name": "GetPrivateLinkEndpoint", "name_key": "Cluster.GetPrivateLinkEndpoint", "input": "GetPrivateLinkEndpointReq", "output": "PrivateLinkEndpoint"},
        {"name": "ListPrivateLinkEndpoints", "name_key": "Cluster.ListPrivateLinkEndpoints", "input": "ListPrivateLinkEndpointsReq", "output": "ListPrivateLinkEndpointsResp"},
        {"name": "DeletePrivateLinkEndpoint", "name_key": "Cluster.DeletePrivateLinkEndpoint", "input": "DeletePrivateLinkEndpointReq", "output": "google.protobuf.Empty"}
      ]
    },
    {
      "name": "HTTPHandlers",
      "type": "http",
      "methods": [
        {"name": "Healthz", "name_key": "HTTPHandlers.Healthz", "method": "ANY", "path": "/healthz", "auth": false},
        {"name": "Version", "name_key": "HTTPHandlers.Version", "method": "ANY", "path": "/version", "auth": false},
        {"name": "Proxy", "name_key": "HTTPHandlers.Proxy", "method": "ANY", "path": "/proxy/*any", "auth": true},
        {"name": "Metrics", "name_key": "HTTPHandlers.Metrics", "method": "GET", "path": "/metrics", "auth": false},
        {"name": "PprofIndex", "name_key": "HTTPHandlers.PprofIndex", "method": "GET", "path": "/debug/pprof/", "auth": false},
        {"name": "PprofCmdline", "name_key": "HTTPHandlers.PprofCmdline", "method": "GET", "path": "/debug/pprof/cmdline", "auth": false},
        {"name": "PprofProfile", "name_key": "HTTPHandlers.PprofProfile", "method": "GET", "path": "/debug/pprof/profile", "auth": false},
        {"name": "PprofSymbol", "name_key": "HTTPHandlers.PprofSymbol", "method": "GET", "path": "/debug/pprof/symbol", "auth": false},
        {"name": "PprofTrace", "name_key": "HTTPHandlers.PprofTrace", "method": "GET", "path": "/debug/pprof/trace", "auth": false}
      ]
    },
    {
      "name": "AdminRoutes",
      "type": "http",
      "methods": [
        {"name": "ExternalReplaceNodeAndSKU", "name_key": "AdminRoutes.ExternalReplaceNodeAndSKU", "method": "POST", "path": "/external-api/v1/orgs/profile/replace_node_and_sku", "auth": true},
        {"name": "ListTenantClusters", "name_key": "AdminRoutes.ListTenantClusters", "method": "GET", "path": "/api/v1/admin/orgs/:org_id/clusters", "auth": true},
        {"name": "DeleteTenantCluster", "name_key": "AdminRoutes.DeleteTenantCluster", "method": "DELETE", "path": "/api/v1/admin/orgs/:org_id/clusters/:cluster_id", "auth": true},
        {"name": "ScaleTenantCluster", "name_key": "AdminRoutes.ScaleTenantCluster", "method": "PUT", "path": "/api/v1/admin/orgs/:org_id/clusters/:cluster_id/components", "auth": true},
        {"name": "PauseTenantCluster", "name_key": "AdminRoutes.PauseTenantCluster", "method": "POST", "path": "/api/v1/admin/orgs/:org_id/clusters/:cluster_id/pause", "auth": true},
        {"name": "ResumeTenantCluster", "name_key": "AdminRoutes.ResumeTenantCluster", "method": "POST", "path": "/api/v1/admin/orgs/:org_id/clusters/:cluster_id/resume", "auth": true},
        {"name": "GetDashboardLinks", "name_key": "AdminRoutes.GetDashboardLinks", "method": "GET", "path": "/api/v1/admin/orgs/:org_id/clusters/:cluster_id/dashboard_links", "auth": true},
        {"name": "ListTenantClusterLifeCycle", "name_key": "AdminRoutes.ListTenantClusterLifeCycle", "method": "GET", "path": "/api/v1/admin/orgs/:org_id/cluster-lifecycles", "auth": true},
        {"name": "AddProvider", "name_key": "AdminRoutes.AddProvider", "method": "POST", "path": "/api/v1/admin/providers", "auth": true},
        {"name": "ListProviders", "name_key": "AdminRoutes.ListProviders", "method": "GET", "path": "/api/v1/admin/providers", "auth": true},
        {"name": "AddRegion", "name_key": "AdminRoutes.AddRegion", "method": "POST", "path": "/api/v1/admin/providers/:provider/regions", "auth": true},
        {"name": "UpdateRegion", "name_key": "AdminRoutes.UpdateRegion", "method": "PUT", "path": "/api/v1/admin/providers/:provider/regions/:region_id", "auth": true},
        {"name": "ListRegions", "name_key": "AdminRoutes.ListRegions", "method": "GET", "path": "/api/v1/admin/providers/:provider/regions", "auth": true},
        {"name": "GetRegionByID", "name_key": "AdminRoutes.GetRegionByID", "method": "GET", "path": "/api/v1/admin/providers/:provider/regions/:region_id", "auth": true},
        {"name": "CalcNodeProfiles", "name_key": "AdminRoutes.CalcNodeProfiles", "method": "POST", "path": "/api/v1/admin/profile/query", "auth": true}
      ]
    }
  ],
  "extensions": {}
}
