I've put a JSON-RPC design doc at http://freeipa.org/page/V3/JSON-RPC.
It's also below for easier quoting.
I found that constants.py already has an env variable called
"rpc_json_uri", and xmlrpc_uri has this comment:
# FIXME: let's renamed xmlrpc_uri to rpc_xml_uri
AFAICS rpc_json_uri is unused, undocumented, and the installer always
leaves it at the default ("http://localhost:8888/ipa/json").
I don't think it's feasible to rename xmlrpc_uri any more, so I used
"jsonrpc_uri" for consistency, and I plan to remove rpc_json_uri in the
[https://fedorahosted.org/freeipa/ticket/3299 #3299] Switch the client
= Overview =
IPA currently uses XML-RPC to communicate with the server. The Web UI
Using JSON-RPC also in the IPA client will allow us to include additional
information in errors, such as instructions or log messages.
Also, switching the protocol will allow us to assume the latest client
version when the client doesn't send a version option (see
This RFE is only for the <tt>ipa</tt> client. Other (especially non-Python)
tools such as ipa-join will continue to use XML-RPC.
The features that JSON-RPC will allow aren't essential for these tools. The
features will simply not be available over XML-RPC.
= Use Cases =
Two options will be added to default.conf:
If jsonrpc_uri is not given, it will be derived from xmlrpc_uri by replacing
"/xml" with "/json".
If rpc_protocol is set to "jsonrpc" (the default), the client will use
to talk to the server. If it's set to "xmlrpc", the client will use XML-RPC.
= Implementation =
No additional requirements or changes discovered during the
= Feature Managment: CLI =
Developers can use the <tt>-e rpc_protocol=xmlrpc</tt> option to
<tt>ipa</tt> to use the old protocol.
= Major configuration options and enablement =
Two new env variables, see Design.
= Replication =
= Updates and Upgrades =
= Dependencies =
= External Impact =
Freeipa-devel mailing list