{
  "repo": "tidbcloud/observability",
  "binary": "diagnosis-query",
  "binary_path": "cmd/diagnosis-query/main.go",
  "surface_kind": "mixed_service",
  "type": "mixed_service",
  "services": [],
  "extensions": {
    "http_routes": [
      {
        "method": "GET",
        "path": "/metrics",
        "handler": "promhttp.Handler",
        "name_key": "HTTP GET /metrics"
      },
      {
        "method": "GET",
        "path": "/swagger/*any",
        "handler": "ginSwagger.WrapHandler",
        "name_key": "HTTP GET /swagger/*any"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/",
        "handler": "pprof.Index",
        "name_key": "HTTP GET /debug/pprof/"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/cmdline",
        "handler": "pprof.Cmdline",
        "name_key": "HTTP GET /debug/pprof/cmdline"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/profile",
        "handler": "pprof.Profile",
        "name_key": "HTTP GET /debug/pprof/profile"
      },
      {
        "method": "POST",
        "path": "/debug/pprof/symbol",
        "handler": "pprof.Symbol",
        "name_key": "HTTP POST /debug/pprof/symbol"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/symbol",
        "handler": "pprof.Symbol",
        "name_key": "HTTP GET /debug/pprof/symbol"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/trace",
        "handler": "pprof.Trace",
        "name_key": "HTTP GET /debug/pprof/trace"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/allocs",
        "handler": "pprof.Handler(allocs)",
        "name_key": "HTTP GET /debug/pprof/allocs"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/block",
        "handler": "pprof.Handler(block)",
        "name_key": "HTTP GET /debug/pprof/block"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/goroutine",
        "handler": "pprof.Handler(goroutine)",
        "name_key": "HTTP GET /debug/pprof/goroutine"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/heap",
        "handler": "pprof.Handler(heap)",
        "name_key": "HTTP GET /debug/pprof/heap"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/mutex",
        "handler": "pprof.Handler(mutex)",
        "name_key": "HTTP GET /debug/pprof/mutex"
      },
      {
        "method": "GET",
        "path": "/debug/pprof/threadcreate",
        "handler": "pprof.Handler(threadcreate)",
        "name_key": "HTTP GET /debug/pprof/threadcreate"
      },
      {
        "method": "GET",
        "path": "/api/v1/slow_query/list",
        "handler": "slowquery.handleList",
        "name_key": "HTTP GET /api/v1/slow_query/list"
      },
      {
        "method": "GET",
        "path": "/api/v1/slow_query/detail",
        "handler": "slowquery.handleDetail",
        "name_key": "HTTP GET /api/v1/slow_query/detail"
      },
      {
        "method": "GET",
        "path": "/api/v1/slow_query/databases",
        "handler": "slowquery.handleDatabases",
        "name_key": "HTTP GET /api/v1/slow_query/databases"
      },
      {
        "method": "GET",
        "path": "/api/v1/slow_query/available_fields",
        "handler": "slowquery.handleAvailableFields",
        "name_key": "HTTP GET /api/v1/slow_query/available_fields"
      },
      {
        "method": "GET",
        "path": "/api/v1/slow_query/stats",
        "handler": "slowquery.handleStats",
        "name_key": "HTTP GET /api/v1/slow_query/stats"
      },
      {
        "method": "GET",
        "path": "/api/v1/slow_query/stats/metric",
        "handler": "slowquery.handleStatsMetric",
        "name_key": "HTTP GET /api/v1/slow_query/stats/metric"
      },
      {
        "method": "GET",
        "path": "/api/v1/slow_query/stats/databases",
        "handler": "slowquery.handleStatsDatabases",
        "name_key": "HTTP GET /api/v1/slow_query/stats/databases"
      },
      {
        "method": "GET",
        "path": "/api/v1/slow_query/stats/time_windows",
        "handler": "slowquery.handleStatsTimeWindows",
        "name_key": "HTTP GET /api/v1/slow_query/stats/time_windows"
      },
      {
        "method": "GET",
        "path": "/api/v1/topsql/config",
        "handler": "topsqlv2.configHandler",
        "name_key": "HTTP GET /api/v1/topsql/config"
      },
      {
        "method": "GET",
        "path": "/api/v1/topsql/instances",
        "handler": "topsqlv2.instancesHandler",
        "name_key": "HTTP GET /api/v1/topsql/instances"
      },
      {
        "method": "GET",
        "path": "/api/v1/topsql/summary",
        "handler": "topsqlv2.summaryHandler",
        "name_key": "HTTP GET /api/v1/topsql/summary"
      },
      {
        "method": "GET",
        "path": "/api/v1/topru/config",
        "handler": "topru.configHandler",
        "name_key": "HTTP GET /api/v1/topru/config"
      },
      {
        "method": "GET",
        "path": "/api/v1/topru/summary",
        "handler": "topru.summaryHandler",
        "name_key": "HTTP GET /api/v1/topru/summary"
      },
      {
        "method": "GET",
        "path": "/api/v1/topru/user_stats",
        "handler": "topru.userStatsHandler",
        "name_key": "HTTP GET /api/v1/topru/user_stats"
      },
      {
        "method": "GET",
        "path": "/api/v1/keyvisual/config",
        "handler": "keyviz.Config",
        "name_key": "HTTP GET /api/v1/keyvisual/config"
      },
      {
        "method": "GET",
        "path": "/api/v1/keyvisual/heatmaps",
        "handler": "keyviz.Heatmaps",
        "name_key": "HTTP GET /api/v1/keyvisual/heatmaps"
      },
      {
        "method": "GET",
        "path": "/api/v1/SQLs/",
        "handler": "sqls.handleTableList",
        "name_key": "HTTP GET /api/v1/SQLs/"
      },
      {
        "method": "GET",
        "path": "/api/v1/SQLs/:name/fields",
        "handler": "sqls.handleTableFields",
        "name_key": "HTTP GET /api/v1/SQLs/:name/fields"
      },
      {
        "method": "GET",
        "path": "/api/v1/SQLs/:name/data",
        "handler": "sqls.handleTableData",
        "name_key": "HTTP GET /api/v1/SQLs/:name/data"
      },
      {
        "method": "GET",
        "path": "/api/v1/SQLs/:name/data/:id",
        "handler": "sqls.handleTableDataByID",
        "name_key": "HTTP GET /api/v1/SQLs/:name/data/:id"
      },
      {
        "method": "GET",
        "path": "/api/v1/statements/list",
        "handler": "sqls.StatementsListHandler",
        "name_key": "HTTP GET /api/v1/statements/list"
      },
      {
        "method": "GET",
        "path": "/api/v1/statements/plan/detail",
        "handler": "sqls.StatementsPlanDetailHandler",
        "name_key": "HTTP GET /api/v1/statements/plan/detail"
      },
      {
        "method": "GET",
        "path": "/api/v1/statements/plans",
        "handler": "sqls.StatementsPlansHandler",
        "name_key": "HTTP GET /api/v1/statements/plans"
      },
      {
        "method": "GET",
        "path": "/api/v1/statements/stmt_types",
        "handler": "sqls.StatementsStmtTypesHandler",
        "name_key": "HTTP GET /api/v1/statements/stmt_types"
      },
      {
        "method": "GET",
        "path": "/api/v1/statements/available_fields",
        "handler": "sqls.StatementsAvailableFieldsHandler",
        "name_key": "HTTP GET /api/v1/statements/available_fields"
      },
      {
        "method": "GET",
        "path": "/api/v1/statements/time_ranges",
        "handler": "sqls.StatementsTimeRangesHandler",
        "name_key": "HTTP GET /api/v1/statements/time_ranges"
      },
      {
        "method": "GET",
        "path": "/api/v1/continuous_profiling/group_profiles",
        "handler": "conprof.handleList",
        "name_key": "HTTP GET /api/v1/continuous_profiling/group_profiles"
      },
      {
        "method": "GET",
        "path": "/api/v1/continuous_profiling/group_profile/detail",
        "handler": "conprof.handleDetail",
        "name_key": "HTTP GET /api/v1/continuous_profiling/group_profile/detail"
      },
      {
        "method": "GET",
        "path": "/api/v1/continuous_profiling/action_token",
        "handler": "conprof.handleActionToken",
        "name_key": "HTTP GET /api/v1/continuous_profiling/action_token"
      },
      {
        "method": "GET",
        "path": "/api/v1/continuous_profiling/download",
        "handler": "conprof.handleDownload",
        "name_key": "HTTP GET /api/v1/continuous_profiling/download"
      },
      {
        "method": "GET",
        "path": "/api/v1/continuous_profiling/single_profile/view",
        "handler": "conprof.handleSingleView",
        "name_key": "HTTP GET /api/v1/continuous_profiling/single_profile/view"
      }
    ],
    "runtime_components": [
      {
        "name": "DiagnosisQuery",
        "kind": "proxy",
        "description": "Catch-all proxy for external slowquery routes.",
        "name_key": "Runtime DiagnosisQuery.ExternalSlowQueryProxy"
      },
      {
        "name": "DiagnosisQuery",
        "kind": "proxy",
        "description": "Catch-all proxy for o11y diagnosis routes.",
        "name_key": "Runtime DiagnosisQuery.O11yDiagnosisProxy"
      }
    ]
  }
}
