[Freeipa-users] JSON-RPC documentation?

Petr Vobornik pvoborni at redhat.com
Tue Jan 15 11:55:15 UTC 2013


Spying Web UI might be another way how to learn the API.

Web UI uses JSON interface for everything it does. You can open 
developer tools in Chrome (hit F12) and watch communication (network 
tab). Do something and then look for requests named 'json' a inspect the 
request payload.

To inspect the API alone you can go through metadata (in console tab) 
which are stored in IPA.metadata object but I guess inspecting python 
code might be easier.

HTH

On 01/15/2013 03:55 AM, Brian Smith wrote:
> That helps a lot.  Thanks!  I would use ipalib, but I'm developing a Rails
> application, so the JSON interface is the quickest (and since XML may be
> deprecated) best way forward (unless you know a way to use it in Ruby :).
>   I'm guessing in JSON, the structure would look something like this:
>
> {
>    "method": "user_add",
>    "params": [
>      [],
>      {
>        "uid":"testuser",
>        "givenname":"Test",
>        "sn":"User",
>        "userpassword":"mySecretPasswordBlahBlah"
>        ...
>      }
>    ]
> }
>
> Maybe I'll try to compile some documentation.  I know that this page helped
> a lot, to cook up a quick ruby client with Curb:
> http://adam.younglogic.com/2010/07/talking-to-freeipa-json-web-api-via-curl/
>
>
> On Mon, Jan 14, 2013 at 9:35 PM, Rob Crittenden <rcritten at redhat.com> wrote:
>
>> Dmitri Pal wrote:
>>
>>> On 01/14/2013 08:16 PM, Brian Smith wrote:
>>>
>>>> Before I pester the dev list, I was wondering if anyone here could
>>>> point me to documentation on the JSON-RPC interface to FreeIPA.  I'm
>>>> not doing anything fancy, just adding users and updating passwords, so
>>>> my requirements are pretty tame.  I've gone through the Python code
>>>> and have somewhat pieced it together myself, but would be more
>>>> comfortable if there were official docs.
>>>>
>>>>   I do not remember us having documentation about XML-RPC but I will
>>> check.
>>> We are actually debating deprecating XML-RPC over time in favor of JSON.
>>>
>>
>> There is no official documentation on either XML-RPC or JSON. The format
>> is rather straightforward once you get the hang of things. Each command is
>> effectively an RPC function (e.g ipa user-add -> user_add). The arguments
>> consist of positional arguments followed by named arguments (there is
>> usually only one positional arg).
>>
>> For XML-RPC it is generally fairly easy to work out what it's doing by
>> adding -vv option to the command-line to see the raw request and response.
>> I personally haven't done a lot of raw JSON work.
>>
>> The final option is to skip all that and use the ipalib to do the work for
>> you.
>>
>> For example, to add a user you'd do something like:
>>
>> from ipalib import api
>> from ipalib import errors
>>
>> api.bootstrap(context='cli')
>> api.finalize()
>> api.Backend.xmlclient.connect(**)
>>
>> try:
>>      api.Command['user_add'](u'**newuser',
>>                              loginshell=u'/bin/something',
>>                              givenname=u'New', sn=u'User')
>> except errors.DuplicateEntry:
>>      print "user already exists"
>> else:
>>      print "user added"
>>
>>
>
> _______________________________________________
> Freeipa-users mailing list
> Freeipa-users at redhat.com
> https://www.redhat.com/mailman/listinfo/freeipa-users
>


-- 
Petr Vobornik




More information about the Freeipa-users mailing list