##// END OF EJS Templates
marked ldap_dn in user edit form as readonly ref #292
marked ldap_dn in user edit form as readonly ref #292

File last commit:

r1843:0771f0f5 beta
r1907:79183c13 default
Show More
api.rst
378 lines | 9.7 KiB | text/x-rst | RstLexer
API docs
r1446 .. _api:
API
===
Starting from RhodeCode version 1.2 a simple API was implemented.
Extended API...
r1500 There's a single schema for calling all api methods. API is implemented
Nicolas VINOT
[API] Update doc
r1592 with JSON protocol both ways. An url to send API request in RhodeCode is
Extended API...
r1500 <your_server>/_admin/api
API docs
r1446
backporting #329 into stable
r1794 All clients are required to send JSON-RPC spec JSON data::
API docs
r1446
{
"api_key":"<api_key>",
"method":"<method_name>",
"args":{"<arg_key>":"<arg_val>"}
}
Extended API...
r1500 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"}}'
Nicolas VINOT
[API] Update doc
r1592 Simply provide
Extended API...
r1500 - *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
Nicolas VINOT
[API] Update doc
r1592
API docs
r1446 .. note::
Nicolas VINOT
[API] Update doc
r1592
api_key can be found in your user account page
backporting #329 into stable
r1794 RhodeCode API will return always a JSON-RPC response::
Nicolas VINOT
[API] Update doc
r1592
API docs
r1446 {
Nicolas VINOT
[API] Update doc
r1592 "result": "<result>",
API docs
r1446 "error": null
}
All responses from API will be `HTTP/1.0 200 OK`, if there's an error while
Nicolas VINOT
[API] Update doc
r1592 calling api *error* key from response will contain failure description
API docs
r1446 and result will be null.
API METHODS
+++++++++++
Nicolas VINOT
[API] Update doc
r1592
API docs
r1446 pull
----
Nicolas VINOT
[API] Update doc
r1592 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
Extended API...
r1500 belonging to user with admin rights
INPUT::
Nicolas VINOT
[API] Update doc
r1592 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"
}
Extended API...
r1500
OUTPUT::
Nicolas VINOT
[API] Update doc
r1592 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
Extended API...
r1500 create_users_group
------------------
Nicolas VINOT
[API] Update doc
r1592 Creates new users group. This command can be executed only using api_key
Extended API...
r1500 belonging to user with admin rights
INPUT::
Nicolas VINOT
[API] Update doc
r1592 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
backporting #329 into stable
r1794 add_user_to_users_group
-----------------------
Nicolas VINOT
[API] Update doc
r1592
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: { }
Extended API...
r1500
OUTPUT::
Nicolas VINOT
[API] Update doc
r1592 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>",
backporting #329 into stable
r1794 "permission" : "repository.(read|write|admin)"
Nicolas VINOT
[API] Update doc
r1592 },
…
{
"id" : "<usersgroupid>",
"name" : "<usersgroupname>",
"active": "<bool>",
backporting #329 into stable
r1794 "permission" : "repository.(read|write|admin)"
Nicolas VINOT
[API] Update doc
r1592 },
…
]
}
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>",
backporting #329 into stable
r1794 "perm" : "(None|repository.(read|write|admin))",
Nicolas VINOT
[API] Update doc
r1592 }
OUTPUT::
result: None
error: null
backporting #329 into stable
r1794
add_users_group_to_repo
-----------------------
Add a users group to a repository. This command can be executed only using
api_key belonging to user with admin rights. If "perm" is None, group will
be removed from the repository.
INPUT::
api_key : "<api_key>"
method : "add_users_group_to_repo"
args: {
"repo_name" : "<reponame>",
"group_name" : "<groupname>",
"perm" : "(None|repository.(read|write|admin))",
}