{
  "repo": "tidbcloud/tidb-management-service",
  "binary": "dedicated-global-service",
  "binary_path": "dedicated-global-service/cmd/dedicated-global-service/main.go",
  "surface_kind": "mixed_service",
  "type": "mixed_service",
  "services": [
    {
      "name": "DedicatedGlobalLifecycle",
      "package": "main",
      "methods": [
        {
          "name": "Startup",
          "name_key": "DedicatedGlobalLifecycle.Startup",
          "input": "config + cobra command flags",
          "output": "running gRPC server + optional workers",
          "type": "local"
        },
        {
          "name": "SetupGRPCServer",
          "name_key": "DedicatedGlobalLifecycle.SetupGRPCServer",
          "input": "tiinf + DI graph",
          "output": "grpc.Server",
          "type": "local"
        },
        {
          "name": "RunDBMigrate",
          "name_key": "DedicatedGlobalLifecycle.RunDBMigrate",
          "input": "configured mysql",
          "output": "migrated schema",
          "type": "local"
        },
        {
          "name": "StartEventbus",
          "name_key": "DedicatedGlobalLifecycle.StartEventbus",
          "input": "eventbus proxy address + WAL watcher",
          "output": "running eventbus + watcher",
          "type": "local"
        },
        {
          "name": "RunWorkflow",
          "name_key": "DedicatedGlobalLifecycle.RunWorkflow",
          "input": "workflow engine",
          "output": "leader-aware workflow runtime",
          "type": "local"
        },
        {
          "name": "StartGlobalWorker",
          "name_key": "DedicatedGlobalLifecycle.StartGlobalWorker",
          "input": "global worker set",
          "output": "period workers started",
          "type": "local"
        }
      ]
    },
    {
      "name": "ClusterService",
      "methods": [
        {
          "name": "CreateCluster",
          "name_key": "ClusterService.CreateCluster",
          "request": "CreateClusterRequest",
          "response": "Cluster",
          "description": "Creates a new TiDB cluster"
        },
        {
          "name": "ListClusters",
          "name_key": "ClusterService.ListClusters",
          "request": "ListClustersRequest",
          "response": "ListClustersResponse",
          "description": "Lists clusters with optional filters"
        },
        {
          "name": "GetCluster",
          "name_key": "ClusterService.GetCluster",
          "request": "GetClusterRequest",
          "response": "Cluster",
          "description": "Gets a single cluster by ID"
        },
        {
          "name": "DeleteCluster",
          "name_key": "ClusterService.DeleteCluster",
          "request": "DeleteClusterRequest",
          "response": "Cluster",
          "description": "Deletes a cluster but keeps backup records"
        },
        {
          "name": "ScaleCluster",
          "name_key": "ClusterService.ScaleCluster",
          "request": "ScaleClusterRequest",
          "response": "Cluster",
          "description": "Scales a single component of a cluster"
        },
        {
          "name": "ScaleClusterWithMultiComponent",
          "name_key": "ClusterService.ScaleClusterWithMultiComponent",
          "request": "ScaleClusterWithMultiComponentRequest",
          "response": "Cluster",
          "description": "Scales multiple components of a cluster"
        },
        {
          "name": "PauseCluster",
          "name_key": "ClusterService.PauseCluster",
          "request": "PauseClusterRequest",
          "response": "Cluster",
          "description": "Pauses a running cluster"
        },
        {
          "name": "ResumeCluster",
          "name_key": "ClusterService.ResumeCluster",
          "request": "ResumeClusterRequest",
          "response": "Cluster",
          "description": "Resumes a paused cluster"
        },
        {
          "name": "GetComponentNodeInfo",
          "name_key": "ClusterService.GetComponentNodeInfo",
          "request": "GetComponentNodeInfoRequest",
          "response": "GetComponentNodeInfoResponse",
          "description": "Gets component node information"
        },
        {
          "name": "SetClientCaCertificate",
          "name_key": "ClusterService.SetClientCaCertificate",
          "request": "SetClientCaCertificateRequest",
          "response": "google.protobuf.Empty",
          "description": "Sets client CA certificate for TLS"
        },
        {
          "name": "GetClientCaCertificate",
          "name_key": "ClusterService.GetClientCaCertificate",
          "request": "GetClientCaCertificateRequest",
          "response": "GetClientCaCertificateResponse",
          "description": "Gets client CA certificate"
        },
        {
          "name": "ApplyCluster",
          "name_key": "ClusterService.ApplyCluster",
          "request": "ApplyClusterRequest",
          "response": "Cluster",
          "description": "Applies cluster configuration changes"
        },
        {
          "name": "GetBillableClustersCount",
          "name_key": "ClusterService.GetBillableClustersCount",
          "request": "GetBillableClustersCountRequest",
          "response": "GetBillableClustersCountResponse",
          "description": "Gets count of billable clusters"
        },
        {
          "name": "GetClusterConfidentialInfo",
          "name_key": "ClusterService.GetClusterConfidentialInfo",
          "request": "GetClusterConfidentialInfoRequest",
          "response": "GetClusterConfidentialInfoResponse",
          "description": "Gets confidential cluster information"
        },
        {
          "name": "CreateClusterSnapshot",
          "name_key": "ClusterService.CreateClusterSnapshot",
          "request": "CreateClusterSnapshotRequest",
          "response": "CreateClusterSnapshotResponse",
          "description": "Creates a cluster snapshot"
        },
        {
          "name": "ListClusterSnapshots",
          "name_key": "ClusterService.ListClusterSnapshots",
          "request": "ListClusterSnapshotsRequest",
          "response": "ListClusterSnapshotsResponse",
          "description": "Lists cluster snapshots"
        },
        {
          "name": "ListTenantQuota",
          "name_key": "ClusterService.ListTenantQuota",
          "request": "ListTenantQuotaRequest",
          "response": "ListTenantQuotaResponse",
          "description": "Lists tenant quotas"
        },
        {
          "name": "UpdateTenantQuota",
          "name_key": "ClusterService.UpdateTenantQuota",
          "request": "UpdateTenantQuotaRequest",
          "response": "UpdateTenantQuotaResponse",
          "description": "Updates tenant quota"
        },
        {
          "name": "ChangeClusterPasswd",
          "name_key": "ClusterService.ChangeClusterPasswd",
          "request": "ChangeClusterPasswdRequest",
          "response": "ChangeClusterPasswdResponse",
          "description": "Changes cluster root password"
        },
        {
          "name": "GetDefaultTidbVersion",
          "name_key": "ClusterService.GetDefaultTidbVersion",
          "request": "GetDefaultTidbVersionRequest",
          "response": "GetDefaultTidbVersionResponse",
          "description": "Gets default TiDB version"
        },
        {
          "name": "GetLogRedactionPolicy",
          "name_key": "ClusterService.GetLogRedactionPolicy",
          "request": "GetLogRedactionPolicyRequest",
          "response": "LogRedactionPolicy",
          "description": "Gets log redaction policy"
        },
        {
          "name": "UpdateLogRedactionPolicy",
          "name_key": "ClusterService.UpdateLogRedactionPolicy",
          "request": "UpdateLogRedactionPolicyRequest",
          "response": "LogRedactionPolicy",
          "description": "Updates log redaction policy"
        },
        {
          "name": "BuildDesiredComponents",
          "name_key": "ClusterService.BuildDesiredComponents",
          "request": "BuildDesiredComponentsRequest",
          "response": "BuildDesiredComponentsResponse",
          "description": "Builds desired components for a cluster"
        },
        {
          "name": "GetClusterCustomParams",
          "name_key": "ClusterService.GetClusterCustomParams",
          "request": "GetClusterCustomParamsRequest",
          "response": "GetClusterCustomParamsResponse",
          "description": "Gets cluster custom parameters"
        },
        {
          "name": "SyncSystemVariables",
          "name_key": "ClusterService.SyncSystemVariables",
          "request": "SyncSystemVariablesRequest",
          "response": "google.protobuf.Empty",
          "description": "Syncs system variables"
        },
        {
          "name": "SyncPdOnlineConfig",
          "name_key": "ClusterService.SyncPdOnlineConfig",
          "request": "SyncPdOnlineConfigRequest",
          "response": "google.protobuf.Empty",
          "description": "Syncs PD online configuration"
        },
        {
          "name": "ShutdownUpgradeCluster",
          "name_key": "ClusterService.ShutdownUpgradeCluster",
          "request": "ShutdownUpgradeClusterRequest",
          "response": "google.protobuf.Empty",
          "description": "Shuts down upgrade cluster"
        }
      ]
    },
    {
      "name": "RegionService",
      "methods": [
        {
          "name": "ListCloudProviders",
          "name_key": "RegionService.ListCloudProviders",
          "request": "ListCloudProvidersRequest",
          "response": "ListCloudProvidersResponse",
          "description": "Lists available cloud providers"
        },
        {
          "name": "RegisterCloudProvider",
          "name_key": "RegionService.RegisterCloudProvider",
          "request": "RegisterCloudProviderRequest",
          "response": "common.v1.CloudProvider",
          "description": "Registers a new cloud provider"
        },
        {
          "name": "ListRegions",
          "name_key": "RegionService.ListRegions",
          "request": "ListRegionsRequest",
          "response": "ListRegionsResponse",
          "description": "Lists available regions"
        },
        {
          "name": "SelectRegionByOrgId",
          "name_key": "RegionService.SelectRegionByOrgId",
          "request": "SelectRegionByOrgIdRequest",
          "response": "common.v1.Region",
          "description": "Selects region by organization ID"
        },
        {
          "name": "GetRegionByLogicalName",
          "name_key": "RegionService.GetRegionByLogicalName",
          "request": "GetRegionByLogicalNameRequest",
          "response": "common.v1.Region",
          "description": "Gets region by logical name"
        },
        {
          "name": "RegisterRegion",
          "name_key": "RegionService.RegisterRegion",
          "request": "RegisterRegionRequest",
          "response": "common.v1.Region",
          "description": "Registers a new region"
        },
        {
          "name": "UpdateRegion",
          "name_key": "RegionService.UpdateRegion",
          "request": "UpdateRegionRequest",
          "response": "common.v1.Region",
          "description": "Updates region configuration"
        },
        {
          "name": "CheckRegionStatus",
          "name_key": "RegionService.CheckRegionStatus",
          "request": "CheckRegionStatusRequest",
          "response": "google.protobuf.Empty",
          "description": "Checks region status"
        },
        {
          "name": "DeleteRegion",
          "name_key": "RegionService.DeleteRegion",
          "request": "DeleteRegionRequest",
          "response": "google.protobuf.Empty",
          "description": "Deletes a region"
        }
      ]
    },
    {
      "name": "SpuService",
      "methods": [
        {
          "name": "ListSpus",
          "name_key": "SpuService.ListSpus",
          "request": "ListSpusRequest",
          "response": "ListSpusResponse",
          "description": "Lists SPUs (Service Product Units)"
        },
        {
          "name": "GetSpu",
          "name_key": "SpuService.GetSpu",
          "request": "GetSpuRequest",
          "response": "Spu",
          "description": "Gets a single SPU by ID"
        },
        {
          "name": "BatchUpsertSpus",
          "name_key": "SpuService.BatchUpsertSpus",
          "request": "BatchUpsertSpusRequest",
          "response": "BatchUpsertSpusResponse",
          "description": "Batch upserts SPUs"
        },
        {
          "name": "GetInstanceMu",
          "name_key": "SpuService.GetInstanceMu",
          "request": "GetInstanceMuRequest",
          "response": "InstanceMu",
          "description": "Gets instance MU (Measurement Unit)"
        },
        {
          "name": "GetStorageMu",
          "name_key": "SpuService.GetStorageMu",
          "request": "GetStorageMuRequest",
          "response": "StorageMu",
          "description": "Gets storage MU"
        },
        {
          "name": "ListInstanceMus",
          "name_key": "SpuService.ListInstanceMus",
          "request": "ListInstanceMusRequest",
          "response": "ListInstanceMusResponse",
          "description": "Lists instance MUs"
        },
        {
          "name": "ListStorageMus",
          "name_key": "SpuService.ListStorageMus",
          "request": "ListStorageMusRequest",
          "response": "ListStorageMusResponse",
          "description": "Lists storage MUs"
        },
        {
          "name": "BatchUpsertInstanceMus",
          "name_key": "SpuService.BatchUpsertInstanceMus",
          "request": "BatchUpsertInstanceMusRequest",
          "response": "BatchUpsertInstanceMusResponse",
          "description": "Batch upserts instance MUs"
        },
        {
          "name": "BatchUpsertStorageMus",
          "name_key": "SpuService.BatchUpsertStorageMus",
          "request": "BatchUpsertStorageMusRequest",
          "response": "BatchUpsertStorageMusResponse",
          "description": "Batch upserts storage MUs"
        },
        {
          "name": "GetSku",
          "name_key": "SpuService.GetSku",
          "request": "GetSkuRequest",
          "response": "Sku",
          "description": "Gets a single SKU"
        },
        {
          "name": "ListSkus",
          "name_key": "SpuService.ListSkus",
          "request": "ListSkusRequest",
          "response": "ListSkusResponse",
          "description": "Lists SKUs"
        },
        {
          "name": "BatchUpsertSkus",
          "name_key": "SpuService.BatchUpsertSkus",
          "request": "BatchUpsertSkusRequest",
          "response": "BatchUpsertSkusResponse",
          "description": "Batch upserts SKUs"
        }
      ]
    },
    {
      "name": "TidbNodeGroupService",
      "methods": [
        {
          "name": "CreateTidbNodeGroup",
          "name_key": "TidbNodeGroupService.CreateTidbNodeGroup",
          "request": "CreateTidbNodeGroupRequest",
          "response": "TidbNodeGroup",
          "description": "Creates a TiDB node group"
        },
        {
          "name": "UpdateTidbNodeGroup",
          "name_key": "TidbNodeGroupService.UpdateTidbNodeGroup",
          "request": "UpdateTidbNodeGroupRequest",
          "response": "TidbNodeGroup",
          "description": "Updates a TiDB node group"
        },
        {
          "name": "DeleteTidbNodeGroup",
          "name_key": "TidbNodeGroupService.DeleteTidbNodeGroup",
          "request": "DeleteTidbNodeGroupRequest",
          "response": "google.protobuf.Empty",
          "description": "Deletes a TiDB node group"
        },
        {
          "name": "ListTidbNodeGroups",
          "name_key": "TidbNodeGroupService.ListTidbNodeGroups",
          "request": "ListTidbNodeGroupsRequest",
          "response": "ListTidbNodeGroupsResponse",
          "description": "Lists TiDB node groups"
        }
      ]
    },
    {
      "name": "VpcService",
      "methods": [
        {
          "name": "ListVpcs",
          "name_key": "VpcService.ListVpcs",
          "request": "ListVpcsRequest",
          "response": "ListVpcsResponse",
          "description": "Lists VPCs"
        },
        {
          "name": "DeleteVpc",
          "name_key": "VpcService.DeleteVpc",
          "request": "DeleteVpcRequest",
          "response": "google.protobuf.Empty",
          "description": "Deletes a VPC"
        },
        {
          "name": "DeleteVpcPeering",
          "name_key": "VpcService.DeleteVpcPeering",
          "request": "DeleteVpcPeeringRequest",
          "response": "google.protobuf.Empty",
          "description": "Deletes a VPC peering connection"
        },
        {
          "name": "ListVpcPeerings",
          "name_key": "VpcService.ListVpcPeerings",
          "request": "ListVpcPeeringsRequest",
          "response": "ListVpcPeeringsResponse",
          "description": "Lists VPC peerings"
        },
        {
          "name": "GetVpcPeering",
          "name_key": "VpcService.GetVpcPeering",
          "request": "GetVpcPeeringRequest",
          "response": "VpcPeering",
          "description": "Gets a VPC peering connection"
        },
        {
          "name": "CreateVpcPeering",
          "name_key": "VpcService.CreateVpcPeering",
          "request": "CreateVpcPeeringRequest",
          "response": "CreateVpcPeeringResponse",
          "description": "Creates a VPC peering connection"
        },
        {
          "name": "CreateCidr",
          "name_key": "VpcService.CreateCidr",
          "request": "CreateCidrRequest",
          "response": "CreateCidrResponse",
          "description": "Creates a CIDR block"
        },
        {
          "name": "QueryCidrs",
          "name_key": "VpcService.QueryCidrs",
          "request": "QueryCidrsRequest",
          "response": "QueryCidrsResponse",
          "description": "Queries CIDR blocks"
        },
        {
          "name": "UpdateCidr",
          "name_key": "VpcService.UpdateCidr",
          "request": "UpdateCidrRequest",
          "response": "UpdateCidrResponse",
          "description": "Updates a CIDR block"
        },
        {
          "name": "DeleteCidr",
          "name_key": "VpcService.DeleteCidr",
          "request": "DeleteCidrRequest",
          "response": "google.protobuf.Empty",
          "description": "Deletes a CIDR block"
        },
        {
          "name": "GetDefaultCidr",
          "name_key": "VpcService.GetDefaultCidr",
          "request": "GetDefaultCidrRequest",
          "response": "GetDefaultCidrResponse",
          "description": "Gets default CIDR"
        },
        {
          "name": "AddSecondaryCidr",
          "name_key": "VpcService.AddSecondaryCidr",
          "request": "AddSecondaryCidrRequest",
          "response": "Vpc",
          "description": "Adds a secondary CIDR block"
        }
      ]
    },
    {
      "name": "PrivateLinkConnectionService",
      "methods": [
        {
          "name": "CreatePrivateLinkService",
          "name_key": "PrivateLinkConnectionService.CreatePrivateLinkService",
          "request": "CreatePrivateLinkServiceRequest",
          "response": "CreatePrivateLinkServiceResponse",
          "description": "Creates a private link service"
        },
        {
          "name": "DeletePrivateLinkService",
          "name_key": "PrivateLinkConnectionService.DeletePrivateLinkService",
          "request": "DeletePrivateLinkServiceRequest",
          "response": "google.protobuf.Empty",
          "description": "Deletes a private link service"
        },
        {
          "name": "GetPrivateLinkService",
          "name_key": "PrivateLinkConnectionService.GetPrivateLinkService",
          "request": "GetPrivateLinkServiceRequest",
          "response": "GetPrivateLinkServiceResponse",
          "description": "Gets a private link service (deprecated)",
          "deprecated": true
        },
        {
          "name": "CreatePrivateLinkEndpoint",
          "name_key": "PrivateLinkConnectionService.CreatePrivateLinkEndpoint",
          "request": "CreatePrivateLinkEndpointRequest",
          "response": "CreatePrivateLinkEndpointResponse",
          "description": "Creates a private link endpoint"
        },
        {
          "name": "DeletePrivateLinkEndpoint",
          "name_key": "PrivateLinkConnectionService.DeletePrivateLinkEndpoint",
          "request": "DeletePrivateLinkEndpointRequest",
          "response": "google.protobuf.Empty",
          "description": "Deletes a private link endpoint"
        },
        {
          "name": "ListPrivateLinkEndpoints",
          "name_key": "PrivateLinkConnectionService.ListPrivateLinkEndpoints",
          "request": "ListPrivateLinkEndpointsRequest",
          "response": "ListPrivateLinkEndpointsResponse",
          "description": "Lists private link endpoints"
        },
        {
          "name": "ListTidbNodeGroupPrivateLinkEndpoints",
          "name_key": "PrivateLinkConnectionService.ListTidbNodeGroupPrivateLinkEndpoints",
          "request": "ListTidbNodeGroupPrivateLinkEndpointsRequest",
          "response": "ListTidbNodeGroupPrivateLinkEndpointsResponse",
          "description": "Lists private link endpoints for TiDB node groups"
        }
      ]
    },
    {
      "name": "CustomerManagedEncryptionService",
      "methods": [
        {
          "name": "CreateCustomerManagedEncryptionKey",
          "name_key": "CustomerManagedEncryptionService.CreateCustomerManagedEncryptionKey",
          "request": "CreateCustomerManagedEncryptionKeyRequest",
          "response": "CustomerManagedEncryptionKey",
          "description": "Creates a customer managed encryption key (CMEK)"
        },
        {
          "name": "GetCustomerManagedEncryptionKey",
          "name_key": "CustomerManagedEncryptionService.GetCustomerManagedEncryptionKey",
          "request": "GetCustomerManagedEncryptionKeyRequest",
          "response": "CustomerManagedEncryptionKey",
          "description": "Gets a CMEK"
        },
        {
          "name": "ListCustomerManagedEncryptionKeys",
          "name_key": "CustomerManagedEncryptionService.ListCustomerManagedEncryptionKeys",
          "request": "ListCustomerManagedEncryptionKeysRequest",
          "response": "ListCustomerManagedEncryptionKeysResponse",
          "description": "Lists CMEKs"
        },
        {
          "name": "DeleteCustomerManagedEncryptionKey",
          "name_key": "CustomerManagedEncryptionService.DeleteCustomerManagedEncryptionKey",
          "request": "DeleteCustomerManagedEncryptionKeyRequest",
          "response": "google.protobuf.Empty",
          "description": "Deletes a CMEK"
        },
        {
          "name": "GetCmekAccessIamPrincipal",
          "name_key": "CustomerManagedEncryptionService.GetCmekAccessIamPrincipal",
          "request": "GetCmekAccessIamPrincipalRequest",
          "response": "GetCmekAccessIamPrincipalResponse",
          "description": "Gets CMEK access IAM principal"
        }
      ]
    },
    {
      "name": "DatabaseAuditLogService",
      "methods": [
        {
          "name": "GetAuditLogConfig",
          "name_key": "DatabaseAuditLogService.GetAuditLogConfig",
          "request": "GetAuditLogConfigRequest",
          "response": "AuditLogConfig",
          "description": "Gets audit log configuration"
        },
        {
          "name": "UpdateAuditLogConfig",
          "name_key": "DatabaseAuditLogService.UpdateAuditLogConfig",
          "request": "UpdateAuditLogConfigRequest",
          "response": "AuditLogConfig",
          "description": "Updates audit log configuration"
        },
        {
          "name": "PrecheckAuditLogConfig",
          "name_key": "DatabaseAuditLogService.PrecheckAuditLogConfig",
          "request": "PrecheckAuditLogConfigRequest",
          "response": "PrecheckAuditLogConfigResponse",
          "description": "Prechecks audit log configuration"
        },
        {
          "name": "ListAuditLogFilterRules",
          "name_key": "DatabaseAuditLogService.ListAuditLogFilterRules",
          "request": "ListAuditLogFilterRulesRequest",
          "response": "ListAuditLogFilterRulesResponse",
          "description": "Lists audit log filter rules"
        },
        {
          "name": "CreateAuditLogFilterRule",
          "name_key": "DatabaseAuditLogService.CreateAuditLogFilterRule",
          "request": "CreateAuditLogFilterRuleRequest",
          "response": "AuditLogFilterRule",
          "description": "Creates an audit log filter rule"
        },
        {
          "name": "DeleteAuditLogFilterRule",
          "name_key": "DatabaseAuditLogService.DeleteAuditLogFilterRule",
          "request": "DeleteAuditLogFilterRuleRequest",
          "response": "google.protobuf.Empty",
          "description": "Deletes an audit log filter rule"
        },
        {
          "name": "ReplaceAuditLogFilterRule",
          "name_key": "DatabaseAuditLogService.ReplaceAuditLogFilterRule",
          "request": "ReplaceAuditLogFilterRuleRequest",
          "response": "AuditLogFilterRule",
          "description": "Replaces an audit log filter rule"
        },
        {
          "name": "GetAccount",
          "name_key": "DatabaseAuditLogService.GetAccount",
          "request": "GetAccountRequest",
          "response": "GetAccountResponse",
          "description": "Gets account information for audit logging"
        },
        {
          "name": "QueryAuditLogFiles",
          "name_key": "DatabaseAuditLogService.QueryAuditLogFiles",
          "request": "QueryAuditLogFilesRequest",
          "response": "QueryAuditLogFilesResponse",
          "description": "Queries audit log files"
        },
        {
          "name": "GenerateAuditLogFileDownloadAddress",
          "name_key": "DatabaseAuditLogService.GenerateAuditLogFileDownloadAddress",
          "request": "GenerateAuditLogFileDownloadAddressRequest",
          "response": "GenerateAuditLogFileDownloadAddressResponse",
          "description": "Generates audit log file download address"
        }
      ]
    },
    {
      "name": "MeteringService",
      "methods": [
        {
          "name": "CalcClusterFee",
          "name_key": "MeteringService.CalcClusterFee",
          "request": "CalcClusterFeeRequest",
          "response": "CalcClusterFeeResponse",
          "description": "Calculates cluster fee for billing"
        }
      ]
    },
    {
      "name": "PrivateLinkServiceMigrationService",
      "methods": [
        {
          "name": "CreatePrivateLinkServiceMigration",
          "name_key": "PrivateLinkServiceMigrationService.CreatePrivateLinkServiceMigration",
          "request": "CreatePrivateLinkServiceMigrationRequest",
          "response": "PrivateLinkServiceMigration",
          "description": "Creates a private link service migration"
        },
        {
          "name": "GetPrivateLinkServiceMigration",
          "name_key": "PrivateLinkServiceMigrationService.GetPrivateLinkServiceMigration",
          "request": "GetPrivateLinkServiceMigrationRequest",
          "response": "PrivateLinkServiceMigration",
          "description": "Gets a private link service migration"
        },
        {
          "name": "ListPrivateLinkServiceMigrations",
          "name_key": "PrivateLinkServiceMigrationService.ListPrivateLinkServiceMigrations",
          "request": "ListPrivateLinkServiceMigrationsRequest",
          "response": "ListPrivateLinkServiceMigrationsResponse",
          "description": "Lists private link service migrations"
        },
        {
          "name": "CancelPrivateLinkServiceMigration",
          "name_key": "PrivateLinkServiceMigrationService.CancelPrivateLinkServiceMigration",
          "request": "CancelPrivateLinkServiceMigrationRequest",
          "response": "google.protobuf.Empty",
          "description": "Cancels a private link service migration"
        }
      ]
    },
    {
      "name": "DataPlatformCompatService",
      "methods": [
        {
          "name": "GetCompatCluster",
          "name_key": "DataPlatformCompatService.GetCompatCluster",
          "request": "GetCompatClusterRequest",
          "response": "CompatCluster",
          "description": "Gets compatibility cluster info for data platform"
        },
        {
          "name": "GetCompatNetwork",
          "name_key": "DataPlatformCompatService.GetCompatNetwork",
          "request": "GetCompatNetworkRequest",
          "response": "CompatNetwork",
          "description": "Gets compatibility network info for data platform"
        },
        {
          "name": "GetCompatProvider",
          "name_key": "DataPlatformCompatService.GetCompatProvider",
          "request": "GetCompatProviderRequest",
          "response": "CompatProvider",
          "description": "Gets compatibility provider info for data platform"
        }
      ]
    },
    {
      "name": "CoreService",
      "package": "github.com/tidbcloud/core-svc/idl/pbgen/proto/core",
      "methods": [
        {
          "name": "CreateCluster",
          "name_key": "CoreService.CreateCluster",
          "request": "CreateClusterRequest",
          "response": "CreateClusterResponse",
          "description": "Creates a new cluster"
        },
        {
          "name": "ChangeClusterPasswd",
          "name_key": "CoreService.ChangeClusterPasswd",
          "request": "ChangeClusterPasswdRequest",
          "response": "ChangeClusterPasswdResponse",
          "description": "Changes cluster password"
        },
        {
          "name": "SetClusterAuthPubKey",
          "name_key": "CoreService.SetClusterAuthPubKey",
          "request": "SetClusterAuthPubKeyRequest",
          "response": "SetClusterAuthPubKeyResponse",
          "description": "Sets cluster authentication public key"
        },
        {
          "name": "GetClusterConfidentialInfo",
          "name_key": "CoreService.GetClusterConfidentialInfo",
          "request": "GetClusterConfidentialInfoRequest",
          "response": "GetClusterConfidentialInfoResponse",
          "description": "Gets cluster confidential information"
        },
        {
          "name": "CleanClusters",
          "name_key": "CoreService.CleanClusters",
          "request": "CleanClustersRequest",
          "response": "CleanClustersResponse",
          "description": "Cleans clusters"
        },
        {
          "name": "ClearCluster",
          "name_key": "CoreService.ClearCluster",
          "request": "ClearClusterRequest",
          "response": "ClearClusterResponse",
          "description": "Clears a cluster"
        },
        {
          "name": "ScaleCluster",
          "name_key": "CoreService.ScaleCluster",
          "request": "ScaleClusterRequest",
          "response": "ScaleClusterResponse",
          "description": "Scales a cluster"
        },
        {
          "name": "PauseCluster",
          "name_key": "CoreService.PauseCluster",
          "request": "PauseClusterRequest",
          "response": "PauseClusterResponse",
          "description": "Pauses a cluster"
        },
        {
          "name": "ResumeCluster",
          "name_key": "CoreService.ResumeCluster",
          "request": "ResumeClusterRequest",
          "response": "ResumeClusterResponse",
          "description": "Resumes a cluster"
        },
        {
          "name": "GetClusterCACertificate",
          "name_key": "CoreService.GetClusterCACertificate",
          "request": "GetClusterCACertificateRequest",
          "response": "GetClusterCACertificateResponse",
          "description": "Gets cluster CA certificate"
        },
        {
          "name": "QueryAccessPoints",
          "name_key": "CoreService.QueryAccessPoints",
          "request": "QueryAccessPointsRequest",
          "response": "QueryAccessPointsResponse",
          "description": "Queries access points"
        },
        {
          "name": "QueryCidrs",
          "name_key": "CoreService.QueryCidrs",
          "request": "QueryCidrsRequest",
          "response": "QueryCidrsResponse",
          "description": "Queries CIDRs"
        },
        {
          "name": "CreateClusterJob",
          "name_key": "CoreService.CreateClusterJob",
          "request": "CreateClusterJobRequest",
          "response": "CreateClusterJobResponse",
          "description": "Creates a cluster job"
        },
        {
          "name": "DeleteClusterJob",
          "name_key": "CoreService.DeleteClusterJob",
          "request": "DeleteClusterJobRequest",
          "response": "DeleteClusterJobResponse",
          "description": "Deletes a cluster job"
        },
        {
          "name": "IsClusterJobRegistered",
          "name_key": "CoreService.IsClusterJobRegistered",
          "request": "IsClusterJobRegisteredRequest",
          "response": "IsClusterJobRegisteredResponse",
          "description": "Checks if cluster job is registered"
        },
        {
          "name": "ListClusterJobs",
          "name_key": "CoreService.ListClusterJobs",
          "request": "ListClusterJobsRequest",
          "response": "ListClusterJobsResponse",
          "description": "Lists cluster jobs"
        },
        {
          "name": "CreateClusterSnapshot",
          "name_key": "CoreService.CreateClusterSnapshot",
          "request": "CreateClusterSnapshotRequest",
          "response": "CreateClusterSnapshotResponse",
          "description": "Creates a cluster snapshot"
        },
        {
          "name": "ListClusterSnapshots",
          "name_key": "CoreService.ListClusterSnapshots",
          "request": "ListClusterSnapshotsRequest",
          "response": "ListClusterSnapshotsResponse",
          "description": "Lists cluster snapshots"
        },
        {
          "name": "GetAwsCmek",
          "name_key": "CoreService.GetAwsCmek",
          "request": "GetAwsCmekRequest",
          "response": "GetAwsCmekResponse",
          "description": "Gets AWS CMEK configuration"
        },
        {
          "name": "CountClusters",
          "name_key": "CoreService.CountClusters",
          "request": "CountClustersRequest",
          "response": "CountClustersResponse",
          "description": "Counts clusters"
        },
        {
          "name": "ExecuteCtlCommand",
          "name_key": "CoreService.ExecuteCtlCommand",
          "request": "ExecuteCtlCommandRequest",
          "response": "ExecuteCtlCommandResponse",
          "description": "Executes ctl command"
        },
        {
          "name": "GetClusterTopology",
          "name_key": "CoreService.GetClusterTopology",
          "request": "GetClusterTopologyRequest",
          "response": "GetClusterTopologyResponse",
          "description": "Gets cluster topology"
        },
        {
          "name": "CreateDBUser",
          "name_key": "CoreService.CreateDBUser",
          "request": "CreateDBUserRequest",
          "response": "CreateDBUserResponse",
          "description": "Creates a database user"
        },
        {
          "name": "UpdateDBUser",
          "name_key": "CoreService.UpdateDBUser",
          "request": "UpdateDBUserRequest",
          "response": "UpdateDBUserResponse",
          "description": "Updates a database user"
        },
        {
          "name": "ListDBUsers",
          "name_key": "CoreService.ListDBUsers",
          "request": "ListDBUsersRequest",
          "response": "ListDBUsersResponse",
          "description": "Lists database users"
        },
        {
          "name": "DeleteDBUser",
          "name_key": "CoreService.DeleteDBUser",
          "request": "DeleteDBUserRequest",
          "response": "DeleteDBUserResponse",
          "description": "Deletes a database user"
        },
        {
          "name": "GetDBUser",
          "name_key": "CoreService.GetDBUser",
          "request": "GetDBUserRequest",
          "response": "GetDBUserResponse",
          "description": "Gets a database user"
        },
        {
          "name": "IsDBUserExisting",
          "name_key": "CoreService.IsDBUserExisting",
          "request": "IsDBUserExistingRequest",
          "response": "IsDBUserExistingResponse",
          "description": "Checks if database user exists"
        },
        {
          "name": "CreateDBRole",
          "name_key": "CoreService.CreateDBRole",
          "request": "CreateDBRoleRequest",
          "response": "CreateDBRoleResponse",
          "description": "Creates a database role"
        },
        {
          "name": "UpdateDBRole",
          "name_key": "CoreService.UpdateDBRole",
          "request": "UpdateDBRoleRequest",
          "response": "UpdateDBRoleResponse",
          "description": "Updates a database role"
        },
        {
          "name": "ListDBRoles",
          "name_key": "CoreService.ListDBRoles",
          "request": "ListDBRolesRequest",
          "response": "ListDBRolesResponse",
          "description": "Lists database roles"
        },
        {
          "name": "DeleteDBRole",
          "name_key": "CoreService.DeleteDBRole",
          "request": "DeleteDBRoleRequest",
          "response": "DeleteDBRoleResponse",
          "description": "Deletes a database role"
        },
        {
          "name": "GetDBRole",
          "name_key": "CoreService.GetDBRole",
          "request": "GetDBRoleRequest",
          "response": "GetDBRoleResponse",
          "description": "Gets a database role"
        },
        {
          "name": "ListClusters",
          "name_key": "CoreService.ListClusters",
          "request": "ListClustersRequest",
          "response": "ListClustersResponse",
          "description": "Lists clusters"
        },
        {
          "name": "GetMaintenanceWindowByProjectID",
          "name_key": "CoreService.GetMaintenanceWindowByProjectID",
          "request": "GetMaintenanceWindowByProjectIDRequest",
          "response": "GetMaintenanceWindowByProjectIDResponse",
          "description": "Gets maintenance window by project ID"
        },
        {
          "name": "UpdateMaintenanceWindow",
          "name_key": "CoreService.UpdateMaintenanceWindow",
          "request": "UpdateMaintenanceWindowRequest",
          "response": "UpdateMaintenanceWindowResponse",
          "description": "Updates maintenance window"
        },
        {
          "name": "CreateMaintenanceTask",
          "name_key": "CoreService.CreateMaintenanceTask",
          "request": "CreateMaintenanceTaskRequest",
          "response": "CreateMaintenanceTaskResponse",
          "description": "Creates a maintenance task"
        },
        {
          "name": "GetMaintenanceTask",
          "name_key": "CoreService.GetMaintenanceTask",
          "request": "GetMaintenanceTaskRequest",
          "response": "GetMaintenanceTaskResponse",
          "description": "Gets a maintenance task"
        },
        {
          "name": "ListMaintenanceTasks",
          "name_key": "CoreService.ListMaintenanceTasks",
          "request": "ListMaintenanceTasksRequest",
          "response": "ListMaintenanceTasksResponse",
          "description": "Lists maintenance tasks"
        },
        {
          "name": "DeleteMaintenanceTask",
          "name_key": "CoreService.DeleteMaintenanceTask",
          "request": "DeleteMaintenanceTaskRequest",
          "response": "DeleteMaintenanceTaskResponse",
          "description": "Deletes a maintenance task"
        },
        {
          "name": "UpdateMaintenanceTask",
          "name_key": "CoreService.UpdateMaintenanceTask",
          "request": "UpdateMaintenanceTaskRequest",
          "response": "UpdateMaintenanceTaskResponse",
          "description": "Updates a maintenance task"
        },
        {
          "name": "GetCluster",
          "name_key": "CoreService.GetCluster",
          "request": "GetClusterRequest",
          "response": "GetClusterResponse",
          "description": "Gets a cluster"
        },
        {
          "name": "UpdateCluster",
          "name_key": "CoreService.UpdateCluster",
          "request": "UpdateClusterRequest",
          "response": "UpdateClusterResponse",
          "description": "Updates a cluster"
        },
        {
          "name": "DeleteCluster",
          "name_key": "CoreService.DeleteCluster",
          "request": "DeleteClusterRequest",
          "response": "DeleteClusterResponse",
          "description": "Deletes a cluster"
        },
        {
          "name": "GetClusterJob",
          "name_key": "CoreService.GetClusterJob",
          "request": "GetClusterJobRequest",
          "response": "GetClusterJobResponse",
          "description": "Gets a cluster job"
        },
        {
          "name": "GetClusterSnapshot",
          "name_key": "CoreService.GetClusterSnapshot",
          "request": "GetClusterSnapshotRequest",
          "response": "GetClusterSnapshotResponse",
          "description": "Gets a cluster snapshot"
        },
        {
          "name": "DeleteClusterSnapshot",
          "name_key": "CoreService.DeleteClusterSnapshot",
          "request": "DeleteClusterSnapshotRequest",
          "response": "DeleteClusterSnapshotResponse",
          "description": "Deletes a cluster snapshot"
        },
        {
          "name": "RestoreClusterFromSnapshot",
          "name_key": "CoreService.RestoreClusterFromSnapshot",
          "request": "RestoreClusterFromSnapshotRequest",
          "response": "RestoreClusterFromSnapshotResponse",
          "description": "Restores cluster from snapshot"
        },
        {
          "name": "ImportData",
          "name_key": "CoreService.ImportData",
          "request": "ImportDataRequest",
          "response": "ImportDataResponse",
          "description": "Imports data"
        },
        {
          "name": "ExportData",
          "name_key": "CoreService.ExportData",
          "request": "ExportDataRequest",
          "response": "ExportDataResponse",
          "description": "Exports data"
        },
        {
          "name": "GetClusterStatus",
          "name_key": "CoreService.GetClusterStatus",
          "request": "GetClusterStatusRequest",
          "response": "GetClusterStatusResponse",
          "description": "Gets cluster status"
        },
        {
          "name": "RestartCluster",
          "name_key": "CoreService.RestartCluster",
          "request": "RestartClusterRequest",
          "response": "RestartClusterResponse",
          "description": "Restarts a cluster"
        },
        {
          "name": "UpgradeCluster",
          "name_key": "CoreService.UpgradeCluster",
          "request": "UpgradeClusterRequest",
          "response": "UpgradeClusterResponse",
          "description": "Upgrades a cluster"
        }
      ]
    }
  ],
  "extensions": {
    "notes": [
      "The binary exposes gRPC services plus pprof/reflection through TiInf; background migrations, eventbus, workflow, and global workers are skipped when --grpc-server-only is set.",
      "The additional encrypt-base64 cobra subcommand is an operator helper and is not treated as a service interface in the deep-scan output."
    ]
  }
}
