{
  "repo": "tidbcloud/loki",
  "binary": "loki",
  "binary_path": "cmd/loki/main.go",
  "surface_kind": "mixed_service",
  "type": "mixed_service",
  "services": [
    {
      "name": "LokiHTTPAndGRPC",
      "type": "hybrid",
      "methods": [
        {
          "name": "ServerConfigListeners",
          "name_key": "Runtime LokiHTTPAndGRPC.ServerConfigListeners",
          "path": "server.http_listen_port + server.grpc_listen_port",
          "method": "HTTP/gRPC",
          "description": "Starts the Loki module server defined by loki.Config.Server."
        },
        {
          "name": "ready",
          "name_key": "HTTP GET /ready",
          "path": "/ready",
          "method": "GET",
          "description": "Readiness endpoint bound after all module services are initialized."
        },
        {
          "name": "services",
          "name_key": "HTTP GET /services",
          "path": "/services",
          "method": "GET",
          "description": "Lists module service status for the active Loki target."
        }
      ]
    },
    {
      "name": "LokiModules",
      "type": "worker",
      "methods": [
        {
          "name": "RunTargetModules",
          "name_key": "Runtime LokiModules.RunTargetModules",
          "description": "Runs the configured distributor, ingester, querier, frontend, ruler, runtime-config, memberlist, and compactor modules for the selected target."
        }
      ]
    }
  ],
  "extensions": {
    "notes": [
      "cmd/loki serves shared HTTP and gRPC listeners and then runs target-specific Loki module graphs."
    ]
  }
}
