{
  "repo": "tidbcloud/core-svc",
  "binary": "server",
  "binary_path": "portal/cmd/server/main.go",
  "surface_kind": "mixed_service",
  "type": "mixed_service",
  "extensions": {},
  "services": [
    {
      "name": "ServerLifecycle",
      "type": "lifecycle",
      "methods": [
        {
          "name": "ParseFlags",
          "name_key": "ServerLifecycle.ParseFlags",
          "description": "Parse the config-path flag used to load the portal runtime configuration."
        },
        {
          "name": "InitConfig",
          "name_key": "ServerLifecycle.InitConfig",
          "description": "Load the portal configuration from the selected config file before any runtime bootstrap begins."
        },
        {
          "name": "InitTiInf",
          "name_key": "ServerLifecycle.InitTiInf",
          "description": "Parse the TiInf config and initialize the unified TiInf runtime with gRPC interceptors and panic recovery."
        },
        {
          "name": "BuildAuthContext",
          "name_key": "ServerLifecycle.BuildAuthContext",
          "description": "Resolve the central and management-portal Auth0 configs from singleton helpers after config initialization."
        },
        {
          "name": "InitDatabase",
          "name_key": "ServerLifecycle.InitDatabase",
          "description": "Initialize the global MySQL connection and attach the otelgorm plugin used by portal models."
        },
        {
          "name": "InitAuditLogSDK",
          "name_key": "ServerLifecycle.InitAuditLogSDK",
          "description": "Initialize the real or mock console audit-log SDK according to the runtime config."
        },
        {
          "name": "InitTracing",
          "name_key": "ServerLifecycle.InitTracing",
          "description": "Initialize Jaeger tracing for the core-portal runtime and continue even when tracing setup fails."
        },
        {
          "name": "RegisterMetricsAndPprof",
          "name_key": "ServerLifecycle.RegisterMetricsAndPprof",
          "description": "Register cluster metrics and pprof handlers for the portal runtime."
        },
        {
          "name": "WarmupSingletons",
          "name_key": "ServerLifecycle.WarmupSingletons",
          "description": "Warm up shared singleton state such as token validators, TLS config, and debug-session helpers before handlers start serving."
        },
        {
          "name": "BuildGRPCServer",
          "name_key": "ServerLifecycle.BuildGRPCServer",
          "description": "Acquire the shared TiInf gRPC server instance and prepare it for local service registration."
        },
        {
          "name": "RegisterGRPCServices",
          "name_key": "ServerLifecycle.RegisterGRPCServices",
          "description": "Register the tenant, cluster, test-token, core, and OpenAPI Cluster services on the shared gRPC server."
        },
        {
          "name": "BuildGinServer",
          "name_key": "ServerLifecycle.BuildGinServer",
          "description": "Attach CORS, tracing, and request-trace middleware to the shared TiInf Gin engine."
        },
        {
          "name": "BuildHTTPGateway",
          "name_key": "ServerLifecycle.BuildHTTPGateway",
          "description": "Register the central and OpenAPI grpc-gateway handlers against the shared Gin engine through the TiInf loopback connection."
        },
        {
          "name": "RegisterBuiltinHTTPHandlers",
          "name_key": "ServerLifecycle.RegisterBuiltinHTTPHandlers",
          "description": "Register the inline /healthz and /version handlers on the shared Gin engine."
        },
        {
          "name": "ConfigureTenantProxy",
          "name_key": "ServerLifecycle.ConfigureTenantProxy",
          "description": "Attach the /proxy route with test-token, Auth0, debug-session, CORS, and forbid-list middleware before reverse proxying to tenant runtimes."
        },
        {
          "name": "SetupAdminAPI",
          "name_key": "ServerLifecycle.SetupAdminAPI",
          "description": "Initialize the management-portal token validator, admin model, and admin HTTP routes on the shared Gin engine."
        },
        {
          "name": "StartUnifiedRuntime",
          "name_key": "ServerLifecycle.StartUnifiedRuntime",
          "description": "Start the unified TiInf runtime that serves the Gin gateway and the gRPC server together."
        }
      ]
    },
    {
      "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
        }
      ]
    }
  ]
}
