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 <rcrit...@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@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users



--
Petr Vobornik

_______________________________________________
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users

Reply via email to