{
  "repo": "tidbcloud/tidb-management-service",
  "binary": "regional_proxy",
  "binary_path": "serverless-global-service/cmd/regional_proxy/main.go",
  "surface_kind": "mixed_service",
  "type": "mixed_service",
  "services": [
    {
      "name": "RegionalProxyLifecycle",
      "package": "main",
      "methods": [
        {
          "name": "Startup",
          "name_key": "RegionalProxyLifecycle.Startup",
          "input": "config + cobra command flags",
          "output": "running gRPC cache service",
          "type": "local"
        },
        {
          "name": "BuildGRPCServer",
          "name_key": "RegionalProxyLifecycle.BuildGRPCServer",
          "input": "tiinf + regional_proxy.NewService()",
          "output": "grpc.Server",
          "type": "local"
        }
      ]
    },
    {
      "name": "RegionalServerProxyService",
      "package": "global.serverless.v1",
      "proto_file": "api/spec/global/serverless/v1/services.proto",
      "methods": [
        {
          "name": "GetDataByIds",
          "name_key": "RegionalServerProxyService.GetDataByIds",
          "description": "Retrieve cluster info from cache by cluster IDs",
          "input": "RegionalServerProxyServiceGetDataByIdsRequest",
          "output": "RegionalServerProxyServiceGetDataByIdsResponse"
        },
        {
          "name": "Set",
          "name_key": "RegionalServerProxyService.Set",
          "description": "Store single cluster info in cache",
          "input": "RegionalServerProxyServiceSetRequest",
          "output": "RegionalServerProxyServiceSetResponse"
        },
        {
          "name": "BatchSet",
          "name_key": "RegionalServerProxyService.BatchSet",
          "description": "Store multiple cluster info in cache",
          "input": "RegionalServerProxyServiceBatchSetRequest",
          "output": "RegionalServerProxyServiceBatchSetResponse"
        },
        {
          "name": "Delete",
          "name_key": "RegionalServerProxyService.Delete",
          "description": "Remove single cluster info from cache",
          "input": "RegionalServerProxyServiceDeleteRequest",
          "output": "RegionalServerProxyServiceDeleteResponse"
        },
        {
          "name": "DeleteAll",
          "name_key": "RegionalServerProxyService.DeleteAll",
          "description": "Clear all cluster info from cache",
          "input": "RegionalServerProxyServiceDeleteAllRequest",
          "output": "RegionalServerProxyServiceDeleteAllResponse"
        }
      ]
    }
  ],
  "extensions": {
    "notes": [
      "The service keeps cluster metadata in an in-memory bigcache with a 15-minute TTL and no persistent backing store.",
      "pprof and gRPC reflection are always enabled at startup."
    ]
  }
}
