{
  "repo": "tidbcloud/ffs",
  "binary": "universe-server",
  "binary_path": "cmd/universe-server/main.go",
  "surface_kind": "mixed_service",
  "type": "service",
  "services": [
    {
      "name": "UniverseLifecycle",
      "methods": [
        {
          "name": "RegisterLease",
          "name_key": "UniverseLifecycle.RegisterLease",
          "input": "clientv3.Client",
          "response": "LeaseID",
          "type": "local"
        },
        {
          "name": "KeepAliveLease",
          "name_key": "UniverseLifecycle.KeepAliveLease",
          "input": "clientv3.LeaseID",
          "response": "void",
          "type": "local"
        },
        {
          "name": "WatchZoneMetadata",
          "name_key": "UniverseLifecycle.WatchZoneMetadata",
          "input": "context.Context",
          "response": "void",
          "type": "local"
        },
        {
          "name": "WatchTenantMetadata",
          "name_key": "UniverseLifecycle.WatchTenantMetadata",
          "input": "context.Context",
          "response": "void",
          "type": "local"
        }
      ]
    },
    {
      "name": "UniverseService",
      "proto_file": "proto/control.proto",
      "methods": [
        {
          "name": "GetZone",
          "name_key": "UniverseService.GetZone",
          "request": "GetZoneReq",
          "response": "Zone",
          "type": "unary"
        },
        {
          "name": "DeleteZone",
          "name_key": "UniverseService.DeleteZone",
          "request": "DeleteZoneReq",
          "response": "EmptyMessage",
          "type": "unary"
        },
        {
          "name": "GetAllZones",
          "name_key": "UniverseService.GetAllZones",
          "request": "EmptyMessage",
          "response": "ZonesList",
          "type": "unary"
        },
        {
          "name": "GlobZones",
          "name_key": "UniverseService.GlobZones",
          "request": "GlobZonesReq",
          "response": "ZonesList",
          "type": "unary"
        },
        {
          "name": "WatchZones",
          "name_key": "UniverseService.WatchZones",
          "request": "WatchZonesReq",
          "response": "ZonesList",
          "type": "server_stream"
        },
        {
          "name": "ZoneHeartbeat",
          "name_key": "UniverseService.ZoneHeartbeat",
          "request": "ZoneHeartbeatReq",
          "response": "Zone",
          "type": "unary"
        },
        {
          "name": "CreateTenant",
          "name_key": "UniverseService.CreateTenant",
          "request": "CreateTenantReq",
          "response": "Tenant",
          "type": "unary"
        },
        {
          "name": "GetTenant",
          "name_key": "UniverseService.GetTenant",
          "request": "GetTenantReq",
          "response": "Tenant",
          "type": "unary"
        },
        {
          "name": "DeleteTenant",
          "name_key": "UniverseService.DeleteTenant",
          "request": "DeleteTenantReq",
          "response": "EmptyMessage",
          "type": "unary"
        },
        {
          "name": "GetAllTenants",
          "name_key": "UniverseService.GetAllTenants",
          "request": "EmptyMessage",
          "response": "TenantsList",
          "type": "unary"
        },
        {
          "name": "GlobTenants",
          "name_key": "UniverseService.GlobTenants",
          "request": "GlobTenantsReq",
          "response": "TenantsList",
          "type": "unary"
        },
        {
          "name": "WatchTenants",
          "name_key": "UniverseService.WatchTenants",
          "request": "WatchTenantsReq",
          "response": "TenantsList",
          "type": "server_stream"
        }
      ]
    }
  ],
  "extensions": {}
}
