{
  "repo": "tidbcloud/shared-provider",
  "binary": "manager",
  "binary_path": "cmd/manager/main.go",
  "surface_kind": "controller_service",
  "type": "controller_service",
  "extensions": {},
  "services": [
    {
      "name": "HealthService",
      "type": "http",
      "methods": [
        {
          "name": "healthz",
          "name_key": "HealthService.healthz",
          "path": "/healthz",
          "method": "GET",
          "description": "Health check endpoint"
        },
        {
          "name": "readyz",
          "name_key": "HealthService.readyz",
          "path": "/readyz",
          "method": "GET",
          "description": "Readiness check endpoint"
        }
      ]
    },
    {
      "name": "MetricsService",
      "type": "http",
      "methods": [
        {
          "name": "metrics",
          "name_key": "MetricsService.metrics",
          "path": "/metrics",
          "method": "GET",
          "description": "Prometheus metrics endpoint exposed on metrics-bind-address"
        }
      ]
    },
    {
      "name": "NetworkReconciler",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "NetworkReconciler.Reconcile",
          "input": "ctrl.Request",
          "output": "ctrl.Result",
          "description": "Manages Network resources, creates namespaces, syncs TiDB operator, backup roles"
        }
      ]
    },
    {
      "name": "ClusterReconciler",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "ClusterReconciler.Reconcile",
          "input": "ctrl.Request",
          "output": "ctrl.Result",
          "description": "Manages TiDB cluster lifecycle including creation, scaling, upgrade, deletion"
        }
      ]
    },
    {
      "name": "NetworkPolicyReconciler",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "NetworkPolicyReconciler.Reconcile",
          "input": "ctrl.Request",
          "output": "ctrl.Result",
          "description": "Manages NetworkPolicy for clusters"
        }
      ]
    },
    {
      "name": "PodReconciler",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "PodReconciler.Reconcile",
          "input": "ctrl.Request",
          "output": "ctrl.Result",
          "description": "Evicts pods based on EvictPodDuration config"
        }
      ]
    },
    {
      "name": "S3CleanReconciler",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "S3CleanReconciler.Reconcile",
          "input": "ctrl.Request",
          "output": "ctrl.Result",
          "description": "Cleans up S3 resources"
        }
      ]
    },
    {
      "name": "BackupReconciler",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "BackupReconciler.Reconcile",
          "input": "ctrl.Request",
          "output": "ctrl.Result",
          "description": "Manages Backup resources for shared-tier"
        }
      ]
    },
    {
      "name": "RestoreReconciler",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "RestoreReconciler.Reconcile",
          "input": "ctrl.Request",
          "output": "ctrl.Result",
          "description": "Manages Restore resources for shared-tier"
        }
      ]
    },
    {
      "name": "ImportReconciler",
      "type": "controller",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "ImportReconciler.Reconcile",
          "input": "ctrl.Request",
          "output": "ctrl.Result",
          "description": "Manages Import resources for shared-tier"
        }
      ]
    }
  ]
}
