From 26c221a980dd75794a783ff457b9e24d4ce8ea5c Mon Sep 17 00:00:00 2001 From: will Date: Tue, 10 Mar 2026 10:52:49 +0000 Subject: [PATCH] rpc: expose RPC metadata for introspection --- src/rpc/server.h | 2 ++ src/rpc/util.h | 3 +++ src/wallet/interfaces.cpp | 1 + 3 files changed, 6 insertions(+) diff --git a/src/rpc/server.h b/src/rpc/server.h index 1c7396407a2..147c8cf6168 100644 --- a/src/rpc/server.h +++ b/src/rpc/server.h @@ -63,6 +63,7 @@ public: fn().GetArgNames(), intptr_t(fn)) { + this->metadata_fn = fn; } std::string category; @@ -79,6 +80,7 @@ public: //! appended after other arguments, see transformNamedArguments for details. std::vector> argNames; intptr_t unique_id; + RpcMethodFnType metadata_fn{nullptr}; }; /** diff --git a/src/rpc/util.h b/src/rpc/util.h index 9627e945392..82ebea612ac 100644 --- a/src/rpc/util.h +++ b/src/rpc/util.h @@ -518,6 +518,9 @@ public: bool IsValidNumArgs(size_t num_args) const; //! Return list of arguments and whether they are named-only. std::vector> GetArgNames() const; + const std::string& GetDescription() const { return m_description; } + const std::vector& GetArgs() const { return m_args; } + const RPCResults& GetResults() const { return m_results; } const std::string m_name; diff --git a/src/wallet/interfaces.cpp b/src/wallet/interfaces.cpp index 4eee155ce21..a4cd056b3ec 100644 --- a/src/wallet/interfaces.cpp +++ b/src/wallet/interfaces.cpp @@ -544,6 +544,7 @@ public: wallet_request.context = &m_context; return command.actor(wallet_request, result, last_handler); }, command.argNames, command.unique_id); + m_rpc_commands.back().metadata_fn = command.metadata_fn; m_rpc_handlers.emplace_back(m_context.chain->handleRpc(m_rpc_commands.back())); } }