{
  "repo": "tidbcloud/tcidm",
  "binary": "regional_tcidm_service",
  "binary_path": "cmd/regional_tcidm_service/main.go",
  "dependencies": {
    "PrivateLinkEndpointService.GetPrivateLinkEndpointCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "GET",
              "trigger": "Fetch PrivateLinkEndpoint CR from Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Get(ctx, types.NamespacedName{Namespace: namespace, Name: name}, &cr)"
            }
          ]
        }
      },
      "services": []
    },
    "PrivateLinkEndpointService.CreatePrivateLinkEndpointCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "CREATE",
              "trigger": "Create PrivateLinkEndpoint CR in Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Create(ctx, cr)"
            }
          ]
        }
      },
      "services": []
    },
    "PrivateLinkEndpointService.DeletePrivateLinkEndpointCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "DELETE",
              "trigger": "Delete PrivateLinkEndpoint CR from Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Delete(ctx, cr)"
            }
          ]
        }
      },
      "services": []
    },
    "DMJobService.GetDMJobCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "GET",
              "trigger": "Fetch DMJob CR from Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Get(ctx, types.NamespacedName{Namespace: namespace, Name: name}, &cr)"
            }
          ]
        }
      },
      "services": []
    },
    "DMJobService.CreateDMJobCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "CREATE",
              "trigger": "Create DMJob CR in Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Create(ctx, cr)"
            }
          ]
        }
      },
      "services": []
    },
    "DMJobService.UpdateDMJobCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "UPDATE",
              "trigger": "Update DMJob CR in Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Update(ctx, cr)"
            }
          ]
        }
      },
      "services": []
    },
    "DMJobService.DeleteDMJobCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "DELETE",
              "trigger": "Delete DMJob CR from Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Delete(ctx, cr)"
            }
          ]
        }
      },
      "services": []
    },
    "ImportService.GetImportCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "GET",
              "trigger": "Fetch Import CR from Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Get(ctx, types.NamespacedName{Namespace: namespace, Name: name}, &cr)"
            }
          ]
        }
      },
      "services": []
    },
    "ImportService.CreateImportCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "CREATE",
              "trigger": "Create Import CR in Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Create(ctx, cr)"
            }
          ]
        }
      },
      "services": []
    },
    "ImportService.DeleteImportCR": {
      "infrastructure": {
        "k8s": {
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "DELETE",
              "trigger": "Delete Import CR from Kubernetes",
              "conditions": ["Always"],
              "implementation": "client.K8sAPI.Client.Delete(ctx, cr)"
            }
          ]
        }
      },
      "services": []
    },
    "ImportService.GetImportProgress": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "GET /proxy/lightning/progress/task",
          "operation_type": "http_get",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetTaskProgress",
              "trigger": "Get import task progress from dataflow agent",
              "conditions": ["Always"],
              "implementation": "importClient.GetTaskProgress(ctx)"
            }
          ]
        }
      ]
    },
    "ImportService.ImportPrecheck": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "POST /api/v1/import/lightning-precheck",
          "operation_type": "http_post",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP LightningPrecheck",
              "trigger": "Run lightning precheck via dataflow agent",
              "conditions": ["Always"],
              "implementation": "agentClient.LightningPrecheck(ctx, req)"
            }
          ]
        }
      ]
    },
    "ImportService.SearchImportFiles": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}:getClusterRole",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["req.AwsExternalId == empty"],
          "operations": [
            {
              "operation": "HTTP GetClusterRole",
              "trigger": "Get AWS external ID for S3 access",
              "conditions": ["AWS provider"],
              "implementation": "clusterServiceHTTPClient.GetClusterRole(ctx, &regionalpb.GetClusterRoleRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "POST /api/v1/import/search-import-files",
          "operation_type": "http_post",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP SearchImportFiles",
              "trigger": "Search import files via dataflow agent",
              "conditions": ["Always"],
              "implementation": "agentClient.SearchImportFiles(ctx, req)"
            }
          ]
        }
      ]
    },
    "ImportService.PrecheckImportFile": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}:getClusterRole",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["req.AwsExternalId == empty"],
          "operations": [
            {
              "operation": "HTTP GetClusterRole",
              "trigger": "Get AWS external ID for S3 access",
              "conditions": ["AWS provider"],
              "implementation": "clusterServiceHTTPClient.GetClusterRole(ctx, &regionalpb.GetClusterRoleRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "POST /api/v1/import/precheck-import-file",
          "operation_type": "http_post",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP PrecheckImportFile",
              "trigger": "Precheck import file via dataflow agent",
              "conditions": ["Always"],
              "implementation": "agentClient.PrecheckImportFile(ctx, req)"
            }
          ]
        }
      ]
    },
    "UtilService.CheckS3Access": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}:getClusterRole",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["req.ExternalId == empty"],
          "operations": [
            {
              "operation": "HTTP GetClusterRole",
              "trigger": "Get AWS external ID for S3 access",
              "conditions": ["AWS provider"],
              "implementation": "clusterServiceHTTPClient.GetClusterRole(ctx, &regionalpb.GetClusterRoleRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "POST /api/v1/s3/check_access",
          "operation_type": "http_post",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP CheckS3Access",
              "trigger": "Check S3 access via dataflow agent",
              "conditions": ["Always"],
              "implementation": "agentClient.CheckS3Access(ctx, req)"
            }
          ]
        }
      ]
    },
    "UtilService.CheckGcsAccess": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "POST /api/v1/gcs/check_access",
          "operation_type": "http_post",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP CheckGcsAccess",
              "trigger": "Check GCS access via dataflow agent",
              "conditions": ["Always"],
              "implementation": "agentClient.CheckGcsAccess(ctx, req)"
            }
          ]
        }
      ]
    },
    "UtilService.CheckAzblobAccess": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "POST /api/v1/azblob/check_access",
          "operation_type": "http_post",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP CheckAzblobAccess",
              "trigger": "Check Azure Blob access via dataflow agent",
              "conditions": ["Always"],
              "implementation": "agentClient.CheckAzblobAccess(ctx, req)"
            }
          ]
        }
      ]
    },
    "UtilService.GetClusterTables": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "POST /api/v1/cluster-tables",
          "operation_type": "http_post",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetClusterTables",
              "trigger": "Get cluster tables via dataflow agent",
              "conditions": ["Always"],
              "implementation": "agentClient.GetClusterTables(ctx, req)"
            }
          ]
        }
      ]
    },
    "UtilService.ExecSQLOnCluster": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "POST /api/v1/cluster/execsql",
          "operation_type": "http_post",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ExecSQLOnCluster",
              "trigger": "Execute SQL on cluster via dataflow agent",
              "conditions": ["Always"],
              "implementation": "agentClient.ExecSQLOnCluster(ctx, req)"
            }
          ]
        }
      ]
    },
    "UtilService.ListVpcs": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/vpcs",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListVpcs",
              "trigger": "List VPCs from tidb-management-service",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.ListVpcs(ctx, req)"
            }
          ]
        }
      ]
    },
    "UtilService.GetClusterRole": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}:getClusterRole",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetClusterRole",
              "trigger": "Get cluster role from tidb-management-service",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetClusterRole(ctx, &regionalpb.GetClusterRoleRequest{ClusterId: clusterId})"
            }
          ]
        }
      ]
    },
    "ProxyService.ProxyToDM": {
      "infrastructure": {},
      "services": [
        {
          "name": "dm",
          "target_interface": "ANY /*any",
          "operation_type": "http_proxy",
          "conditions": ["X-DM-Addr header provided"],
          "operations": [
            {
              "operation": "HTTP Reverse Proxy",
              "trigger": "Proxy request to DM service",
              "conditions": ["X-DM-Addr header present"],
              "implementation": "httputil.ReverseProxy.ServeHTTP(w, req)"
            }
          ]
        }
      ]
    },
    "ProxyService.ProxyToDataflowAgent": {
      "infrastructure": {},
      "services": [
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/clusters/{clusterId}",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP GetCluster",
              "trigger": "Get cluster info to find dataflow agent URL",
              "conditions": ["Always"],
              "implementation": "clusterServiceHTTPClient.GetCluster(ctx, &regionalpb.GetClusterRequest{ClusterId: clusterId})"
            }
          ]
        },
        {
          "name": "tidb-management-service",
          "target_interface": "GET /api/dedicated/v1/appboxes",
          "operation_type": "http_get",
          "target_repo": "tidbcloud/tidb-management-service",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP ListAppBoxes",
              "trigger": "Get dataflow agent URL from appbox",
              "conditions": ["Always"],
              "implementation": "appBoxServiceHTTPClient.ListAppBoxes(ctx, &regionalpb.ListAPPBoxesRequest{TenantId: cluster.TenantId, ProjectId: cluster.ProjectId, ClusterId: cluster.Id})"
            }
          ]
        },
        {
          "name": "dataflow-agent",
          "target_interface": "ANY /*any",
          "operation_type": "http_proxy",
          "conditions": ["Always"],
          "operations": [
            {
              "operation": "HTTP Reverse Proxy",
              "trigger": "Proxy request to dataflow-agent",
              "conditions": ["Always"],
              "implementation": "httputil.ReverseProxy.ServeHTTP(w, req)"
            }
          ]
        }
      ]
    },
    "HealthService.Healthz": {
      "infrastructure": {},
      "services": []
    },
    "MetricsService.Metrics": {
      "infrastructure": {},
      "services": []
    }
  }
}
