diff docs/api/api.rst @ 1676:8628c8706bf8 beta

[API] Update doc
author Nicolas VINOT <aeris@imirhil.fr>
date Sat, 22 Oct 2011 23:18:03 +0200
parents 256e729a94cd
children fee9895fa46e 702e29ce1e9b
line wrap: on
line diff
--- a/docs/api/api.rst	Wed Oct 19 01:47:56 2011 +0200
+++ b/docs/api/api.rst	Sat Oct 22 23:18:03 2011 +0200
@@ -7,7 +7,7 @@
 
 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 
+with JSON protocol both ways. An url to send API request in RhodeCode is
 <your_server>/_admin/api
 
 
@@ -22,90 +22,341 @@
 Example call for autopulling remotes repos using curl::
     curl https://server.com/_admin/api -X POST -H 'content-type:text/plain' --data-binary '{"api_key":"xe7cdb2v278e4evbdf5vs04v832v0efvcbcve4a3","method":"pull","args":{"repo":"CPython"}}'
 
-Simply provide 
+Simply provide
  - *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    
-    
-    
+
+    api_key can be found in your user account page
+
+
 RhodeCode API will return always a JSON formatted answer::
-    
+
     {
-        "result": "<result>", 
+        "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 
+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
-
-    
-create_user
------------
-
-Creates new user in RhodeCode. This command can be executed only using api_key 
+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: "create_user"
-    args: {"username": "<username>", 
-           "password": "<password>", 
-           "active":   "<bool>", 
-           "admin":    "<bool>", 
-           "name":     "<firstname>", 
-           "lastname": "<lastname>", 
-           "email":    "<useremail>"}
+    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:{"id": <newuserid>,
-            "msg":"created new user <username>"}
-    error:null
-    
-    
+    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 
+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_user"
-    args: {"name":  "<groupname>", 
-           "active":"<bool>"}
+    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": <newusersgroupid>,
-            "msg":"created new users group <groupname>"}
-    error:null    
+    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