diff --git a/libs/dmf-engine/src/api_server.cpp b/libs/dmf-engine/src/api_server.cpp index fd5786f..7c103d6 100644 --- a/libs/dmf-engine/src/api_server.cpp +++ b/libs/dmf-engine/src/api_server.cpp @@ -321,6 +321,26 @@ static void handle_request(const std::string& method, const std::string& path, } else { error_resp(500, "Failed to send command to node"); } + } else if (path.find("/api/graph/nodes/") == 0 && path.find("/register") != std::string::npos && method == "POST") { + auto prefix = std::string("/api/graph/nodes/"); + auto suffix_start = path.find("/register"); + auto node_id = path.substr(prefix.length(), suffix_start - prefix.length()); + + if (!req_body.contains("port")) { + error_resp(400, "Missing port"); + return; + } + + auto control_port = static_cast(req_body["port"].get()); + cc.register_node(node_id, control_port); + + auto* node = graph.get_node_mut(node_id); + if (node) { + node->control_port = control_port; + node->state = NodeState::Running; + } + + ok({{"node_id", node_id}, {"control_port", control_port}}); } else if (path == "/api/fabric/create-target" && method == "POST") { if (!req_body.contains("node_id")) { error_resp(400, "Missing node_id");