Files @ 2afa6b8c2ade
Branch filter:

Location: kallithea/docs/api/api.rst - annotation

2afa6b8c2ade 9.4 KiB text/prs.fallenstein.rst Show Source Show as Raw Download as Raw
Marcin Kuzminski
code garden
- added more logging to auth ldap
- updated keywords for setuptools
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
256e729a94cd
8628c8706bf8
256e729a94cd
eab0cf9ab8bf
eab0cf9ab8bf
fee9895fa46e
eab0cf9ab8bf
fee9895fa46e
fee9895fa46e
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
256e729a94cd
fee9895fa46e
256e729a94cd
8628c8706bf8
fee9895fa46e
256e729a94cd
256e729a94cd
256e729a94cd
8628c8706bf8
eab0cf9ab8bf
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
fee9895fa46e
8628c8706bf8
fee9895fa46e
fee9895fa46e
8628c8706bf8
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
8628c8706bf8
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
8628c8706bf8
eab0cf9ab8bf
eab0cf9ab8bf
eab0cf9ab8bf
8628c8706bf8
8628c8706bf8
256e729a94cd
256e729a94cd
256e729a94cd
256e729a94cd
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
256e729a94cd
256e729a94cd
256e729a94cd
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
256e729a94cd
256e729a94cd
256e729a94cd
8628c8706bf8
256e729a94cd
256e729a94cd
256e729a94cd
256e729a94cd
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
256e729a94cd
256e729a94cd
256e729a94cd
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
8628c8706bf8
.. _api:


API
===


Starting from RhodeCode version 1.2 a simple API was implemented.
There's a single schema for calling all api methods. API is implemented
with JSON protocol both ways. An url to send API request in RhodeCode is
<your_server>/_admin/api


All clients are required to send JSON-RPC spec JSON data::

    {   
        "id:<id>,
        "api_key":"<api_key>",
        "method":"<method_name>",
        "args":{"<arg_key>":"<arg_val>"}
    }

Example call for autopulling remotes repos using curl::
    curl https://server.com/_admin/api -X POST -H 'content-type:text/plain' --data-binary '{"id":1,"api_key":"xe7cdb2v278e4evbdf5vs04v832v0efvcbcve4a3","method":"pull","args":{"repo":"CPython"}}'

Simply provide
 - *id* A value of any type, which is used to match the response with the request that it is replying to.
 - *api_key* for access and permission validation.
 - *method* is name of method to call
 - *args* is an key:value list of arguments to pass to method

.. note::

    api_key can be found in your user account page


RhodeCode API will return always a JSON-RPC response::

    {   
        "id":<id>,
        "result": "<result>",
        "error": null
    }

All responses from API will be `HTTP/1.0 200 OK`, if there's an error while
calling api *error* key from response will contain failure description
and result will be null.

API METHODS
+++++++++++


pull
----

Pulls given repo from remote location. Can be used to automatically keep
remote repos up to date. This command can be executed only using api_key
belonging to user with admin rights

INPUT::

    api_key : "<api_key>"
    method :  "pull"
    args :    {
                "repo" : "<repo_name>"
              }

OUTPUT::

    result : "Pulled from <repo_name>"
    error :  null


get_users
---------

Lists all existing users. This command can be executed only using api_key
belonging to user with admin rights.

INPUT::

    api_key : "<api_key>"
    method :  "get_users"
    args :    { }

OUTPUT::

    result: [
              {
                "id" :       "<id>",
                "username" : "<username>",
                "firstname": "<firstname>",
                "lastname" : "<lastname>",
                "email" :    "<email>",
                "active" :   "<bool>",
                "admin" :    "<bool>",
                "ldap" :     "<ldap_dn>"
              },
    	
            ]
    error:  null

create_user
-----------

Creates new user in RhodeCode. This command can be executed only using api_key
belonging to user with admin rights.

INPUT::

    api_key : "<api_key>"
    method :  "create_user"
    args :    {
                "username" :  "<username>",
                "password" :  "<password>",
                "firstname" : "<firstname>",
                "lastname" :  "<lastname>",
                "email" :     "<useremail>"
                "active" :    "<bool> = True",
                "admin" :     "<bool> = False",
                "ldap_dn" :   "<ldap_dn> = None"
              }

OUTPUT::

    result: {
              "msg" : "created new user <username>"
            }
    error:  null

get_users_groups
----------------

Lists all existing users groups. This command can be executed only using api_key
belonging to user with admin rights.

INPUT::

    api_key : "<api_key>"
    method :  "get_users_groups"
    args :    { }

OUTPUT::

    result : [
               {
                 "id" :       "<id>",
                 "name" :     "<name>",
                 "active":    "<bool>",
                 "members" :  [
	    	                    {
	    	                      "id" :       "<userid>",
	                              "username" : "<username>",
	                              "firstname": "<firstname>",
	                              "lastname" : "<lastname>",
	                              "email" :    "<email>",
	                              "active" :   "<bool>",
	                              "admin" :    "<bool>",
	                              "ldap" :     "<ldap_dn>"
	                            },
	    		                          ]
	            }
              ]
    error : null

get_users_group
---------------

Gets an existing users group. This command can be executed only using api_key
belonging to user with admin rights.

INPUT::

    api_key : "<api_key>"
    method :  "get_users_group"
    args :    {
                "group_name" : "<name>"
              }

OUTPUT::

    result : None if group not exist
             {
               "id" :       "<id>",
               "name" :     "<name>",
               "active":    "<bool>",
               "members" :  [
	    	                  { "id" :       "<userid>",
	                            "username" : "<username>",
	                            "firstname": "<firstname>",
	                            "lastname" : "<lastname>",
	                            "email" :    "<email>",
	                            "active" :   "<bool>",
	                            "admin" :    "<bool>",
	                            "ldap" :     "<ldap_dn>"
	                          },
	    		                        ]
             }
    error : null

create_users_group
------------------

Creates new users group. This command can be executed only using api_key
belonging to user with admin rights

INPUT::

    api_key : "<api_key>"
    method :  "create_users_group"
    args:     {
                "name":  "<name>",
                "active":"<bool> = True"
              }

OUTPUT::

    result: {
              "id":  "<newusersgroupid>",
              "msg": "created new users group <name>"
            }
    error:  null

add_user_to_users_groups
------------------------

Adds a user to a users group. This command can be executed only using api_key
belonging to user with admin rights

INPUT::

    api_key : "<api_key>"
    method :  "add_user_users_group"
    args:     {
                "group_name" :  "<groupname>",
                "user_name" :   "<username>"
              }

OUTPUT::

    result: {
              "id":  "<newusersgroupmemberid>",
              "msg": "created new users group member"
            }
    error:  null

get_repos
---------

Lists all existing repositories. This command can be executed only using api_key
belonging to user with admin rights

INPUT::

    api_key : "<api_key>"
    method :  "get_repos"
    args:     { }

OUTPUT::

    result: [
              {
                "id" :          "<id>",
                "name" :        "<name>"
                "type" :        "<type>",
                "description" : "<description>"
              },

            ]
    error:  null

get_repo
--------

Gets an existing repository. This command can be executed only using api_key
belonging to user with admin rights

INPUT::

    api_key : "<api_key>"
    method :  "get_repo"
    args:     {
                "name" : "<name>"
              }

OUTPUT::

    result: None if repository not exist
            {
                "id" :          "<id>",
                "name" :        "<name>"
                "type" :        "<type>",
                "description" : "<description>",
                "members" :     [
                                  { "id" :         "<userid>",
	                                "username" :   "<username>",
	                                "firstname":   "<firstname>",
	                                "lastname" :   "<lastname>",
	                                "email" :      "<email>",
	                                "active" :     "<bool>",
	                                "admin" :      "<bool>",
	                                "ldap" :       "<ldap_dn>",
	                                "permission" : "repository_(read|write|admin)"
	                              },
                                  {
                                    "id" :       "<usersgroupid>",
                                    "name" :     "<usersgroupname>",
                                    "active":    "<bool>",
                                    "permission" : "repository_(read|write|admin)"
                                  },
                                ]
            }
    error:  null

create_repo
-----------

Creates a repository. This command can be executed only using api_key
belonging to user with admin rights.
If repository name contains "/", all needed repository groups will be created.
For example "foo/bar/baz" will create groups "foo", "bar" (with "foo" as parent),
and create "baz" repository with "bar" as group.

INPUT::

    api_key : "<api_key>"
    method :  "create_repo"
    args:     {
                "name" :        "<name>",
                "owner_name" :  "<ownername>",
                "description" : "<description> = ''",
                "repo_type" :   "<type> = 'hg'",
                "private" :     "<bool> = False"
              }

OUTPUT::

    result: None
    error:  null

add_user_to_repo
----------------

Add a user to a repository. This command can be executed only using api_key
belonging to user with admin rights.
If "perm" is None, user will be removed from the repository.

INPUT::

    api_key : "<api_key>"
    method :  "add_user_to_repo"
    args:     {
                "repo_name" :  "<reponame>",
                "user_name" :  "<username>",
                "perm" :       "(None|repository_(read|write|admin))",
              }

OUTPUT::

    result: None
    error:  null