api.rst
1001 lines
| 29.1 KiB
| text/x-rst
|
RstLexer
r1446 | .. _api: | |||
r2095 | === | |||
r1446 | API | |||
=== | ||||
Starting from RhodeCode version 1.2 a simple API was implemented. | ||||
r1500 | There's a single schema for calling all api methods. API is implemented | |||
r2531 | with JSON protocol both ways. An url to send API request to RhodeCode is | |||
r1500 | <your_server>/_admin/api | |||
r1446 | ||||
r1839 | API ACCESS FOR WEB VIEWS | |||
++++++++++++++++++++++++ | ||||
r1446 | ||||
r3224 | API access can also be turned on for each web view in RhodeCode that is | |||
decorated with `@LoginRequired` decorator. To enable API access simple change | ||||
the standard login decorator to `@LoginRequired(api_access=True)`. | ||||
r3769 | ||||
To make this operation easier, starting from version 1.7.0 there's a white list | ||||
of views that will have API access enabled. Simply edit `api_access_controllers_whitelist` | ||||
option in your .ini file, and define views that should have API access enabled. | ||||
Following example shows how to enable API access to patch/diff raw file and archive | ||||
in RhodeCode:: | ||||
api_access_controllers_whitelist = | ||||
ChangesetController:changeset_patch, | ||||
ChangesetController:changeset_raw, | ||||
FilesController:raw, | ||||
FilesController:archivefile | ||||
r3224 | After this change, a rhodecode view can be accessed without login by adding a | |||
r1911 | GET parameter `?api_key=<api_key>` to url. By default this is only | |||
r3769 | enabled on RSS/ATOM feed views. Exposing raw diffs is a good way to integrate with | |||
3rd party services like code review, or build farms that could download archives. | ||||
r1812 | ||||
r1839 | API ACCESS | |||
++++++++++ | ||||
r1708 | All clients are required to send JSON-RPC spec JSON data:: | |||
r1446 | ||||
r3224 | { | |||
r2143 | "id:"<id>", | |||
r1446 | "api_key":"<api_key>", | |||
"method":"<method_name>", | ||||
"args":{"<arg_key>":"<arg_val>"} | ||||
} | ||||
r1500 | Example call for autopulling remotes repos using curl:: | |||
r1708 | 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"}}' | |||
r1500 | ||||
|
r1592 | Simply provide | ||
r1708 | - *id* A value of any type, which is used to match the response with the request that it is replying to. | |||
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 | ||||
|
r1592 | |||
r1446 | .. note:: | |||
|
r1592 | |||
api_key can be found in your user account page | ||||
r1708 | RhodeCode API will return always a JSON-RPC response:: | |||
|
r1592 | |||
r3224 | { | |||
r2143 | "id":<id>, # matching id sent by request | |||
"result": "<result>"|null, # JSON formatted result, null if any errors | ||||
"error": "null"|<error_message> # JSON formatted error (if any) | ||||
r1446 | } | |||
All responses from API will be `HTTP/1.0 200 OK`, if there's an error while | ||||
|
r1592 | calling api *error* key from response will contain failure description | ||
r1446 | and result will be null. | |||
r2379 | ||||
API CLIENT | ||||
++++++++++ | ||||
r2531 | From version 1.4 RhodeCode adds a script that allows to easily | |||
r2379 | communicate with API. After installing RhodeCode a `rhodecode-api` script | |||
will be available. | ||||
To get started quickly simply run:: | ||||
rhodecode-api _create_config --apikey=<youapikey> --apihost=<rhodecode host> | ||||
r3224 | ||||
r2379 | This will create a file named .config in the directory you executed it storing | |||
json config file with credentials. You can skip this step and always provide | ||||
both of the arguments to be able to communicate with server | ||||
after that simply run any api command for example get_repo:: | ||||
r3224 | ||||
r2379 | rhodecode-api get_repo | |||
calling {"api_key": "<apikey>", "id": 75, "args": {}, "method": "get_repo"} to http://127.0.0.1:5000 | ||||
rhodecode said: | ||||
{'error': 'Missing non optional `repoid` arg in JSON DATA', | ||||
'id': 75, | ||||
'result': None} | ||||
Ups looks like we forgot to add an argument | ||||
Let's try again now giving the repoid as parameters:: | ||||
r3224 | rhodecode-api get_repo repoid:rhodecode | |||
r2379 | calling {"api_key": "<apikey>", "id": 39, "args": {"repoid": "rhodecode"}, "method": "get_repo"} to http://127.0.0.1:5000 | |||
rhodecode said: | ||||
{'error': None, | ||||
'id': 39, | ||||
'result': <json data...>} | ||||
r1446 | API METHODS | |||
+++++++++++ | ||||
|
r1592 | |||
r1446 | pull | |||
---- | ||||
|
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 | ||||
r1500 | belonging to user with admin rights | |||
INPUT:: | ||||
r2143 | id : <id_for_response> | |||
|
r1592 | api_key : "<api_key>" | ||
method : "pull" | ||||
args : { | ||||
r2531 | "repoid" : "<reponame or repo_id>" | |||
|
r1592 | } | ||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
result : "Pulled from `<reponame>`" | ||||
|
r1592 | error : null | ||
r2697 | rescan_repos | |||
------------ | ||||
Dispatch rescan repositories action. If remove_obsolete is set | ||||
RhodeCode will delete repos that are in database but not in the filesystem. | ||||
r3224 | This command can be executed only using api_key belonging to user with admin | |||
r2697 | rights. | |||
INPUT:: | ||||
id : <id_for_response> | ||||
api_key : "<api_key>" | ||||
method : "rescan_repos" | ||||
args : { | ||||
"remove_obsolete" : "<boolean = Optional(False)>" | ||||
} | ||||
OUTPUT:: | ||||
id : <id_given_in_input> | ||||
r3224 | result : "{'added': [<list of names of added repos>], | |||
r2697 | 'removed': [<list of names of removed repos>]}" | |||
error : null | ||||
r3235 | invalidate_cache | |||
---------------- | ||||
Invalidate cache for repository. | ||||
This command can be executed only using api_key belonging to user with admin | ||||
rights or regular user that have write or admin or write access to repository. | ||||
INPUT:: | ||||
id : <id_for_response> | ||||
api_key : "<api_key>" | ||||
method : "invalidate_cache" | ||||
args : { | ||||
"repoid" : "<reponame or repo_id>" | ||||
} | ||||
OUTPUT:: | ||||
id : <id_given_in_input> | ||||
|
r3759 | result : "Caches of repository `<reponame>`" | ||
r3235 | error : null | |||
r2737 | lock | |||
---- | ||||
r3161 | Set locking state on given repository by given user. If userid param is skipped | |||
r3457 | , then it is set to id of user whos calling this method. If locked param is skipped | |||
then function shows current lock state of given repo. | ||||
r3224 | This command can be executed only using api_key belonging to user with admin | |||
r3161 | rights or regular user that have admin or write access to repository. | |||
r2737 | ||||
INPUT:: | ||||
id : <id_for_response> | ||||
api_key : "<api_key>" | ||||
method : "lock" | ||||
args : { | ||||
"repoid" : "<reponame or repo_id>" | ||||
r3161 | "userid" : "<user_id or username = Optional(=apiuser)>", | |||
r3457 | "locked" : "<bool true|false = Optional(=None)>" | |||
r2737 | } | |||
OUTPUT:: | ||||
id : <id_given_in_input> | ||||
result : "User `<username>` set lock state for repo `<reponame>` to `true|false`" | ||||
error : null | ||||
r3126 | show_ip | |||
------- | ||||
Shows IP address as seen from RhodeCode server, together with all | ||||
defined IP addresses for given user. | ||||
r3224 | This command can be executed only using api_key belonging to user with admin | |||
r3126 | rights. | |||
INPUT:: | ||||
id : <id_for_response> | ||||
api_key : "<api_key>" | ||||
method : "show_ip" | ||||
args : { | ||||
"userid" : "<user_id or username>", | ||||
} | ||||
OUTPUT:: | ||||
id : <id_given_in_input> | ||||
result : { | ||||
"ip_addr_server": <ip_from_clien>", | ||||
"user_ips": [ | ||||
{ | ||||
"ip_addr": "<ip_with_mask>", | ||||
"ip_range": ["<start_ip>", "<end_ip>"], | ||||
}, | ||||
... | ||||
] | ||||
} | ||||
r3224 | ||||
r3126 | error : null | |||
r1843 | get_user | |||
-------- | ||||
r2010 | Get's an user by username or user_id, Returns empty result if user is not found. | |||
r3162 | If userid param is skipped it is set to id of user who is calling this method. | |||
r3224 | This command can be executed only using api_key belonging to user with admin | |||
r3163 | rights, or regular users that cannot specify different userid than theirs | |||
r1843 | ||||
r1982 | ||||
r1843 | INPUT:: | |||
r2143 | id : <id_for_response> | |||
r1843 | api_key : "<api_key>" | |||
method : "get_user" | ||||
r3224 | args : { | |||
r3162 | "userid" : "<username or user_id Optional(=apiuser)>" | |||
r1843 | } | |||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r3224 | result: None if user does not exist or | |||
r1843 | { | |||
r3127 | "user_id" : "<user_id>", | |||
r3213 | "api_key" : "<api_key>", | |||
r3127 | "username" : "<username>", | |||
"firstname": "<firstname>", | ||||
"lastname" : "<lastname>", | ||||
"email" : "<email>", | ||||
"emails": "<list_of_all_additional_emails>", | ||||
"ip_addresses": "<list_of_ip_addresses_for_user>", | ||||
"active" : "<bool>", | ||||
"admin" :Â "<bool>", | ||||
"ldap_dn" : "<ldap_dn>", | ||||
"last_login": "<last_login>", | ||||
r2151 | "permissions": { | |||
"global": ["hg.create.repository", | ||||
"repository.read", | ||||
"hg.register.manual_activate"], | ||||
"repositories": {"repo1": "repository.none"}, | ||||
"repositories_groups": {"Group1": "group.read"} | ||||
}, | ||||
r1843 | } | |||
error: null | ||||
|
r1592 | get_users | ||
--------- | ||||
Lists all existing users. This command can be executed only using api_key | ||||
belonging to user with admin rights. | ||||
r1982 | ||||
|
r1592 | INPUT:: | ||
r2143 | id : <id_for_response> | |||
|
r1592 | api_key : "<api_key>" | ||
method : "get_users" | ||||
args : { } | ||||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
|
r1592 | result: [ | ||
{ | ||||
r3127 | "user_id" : "<user_id>", | |||
"username" : "<username>", | ||||
"firstname": "<firstname>", | ||||
"lastname" : "<lastname>", | ||||
"email" : "<email>", | ||||
"emails": "<list_of_all_additional_emails>", | ||||
"ip_addresses": "<list_of_ip_addresses_for_user>", | ||||
"active" : "<bool>", | ||||
"admin" :Â "<bool>", | ||||
"ldap_dn" : "<ldap_dn>", | ||||
"last_login": "<last_login>", | ||||
|
r1592 | }, | ||
|
r3267 | … | ||
|
r1592 | ] | ||
error: null | ||||
r1982 | ||||
|
r1592 | create_user | ||
----------- | ||||
r3224 | Creates new user. This command can | |||
r1909 | be executed only using api_key belonging to user with admin rights. | |||
|
r1592 | |||
r1982 | ||||
|
r1592 | INPUT:: | ||
r2143 | id : <id_for_response> | |||
|
r1592 | api_key : "<api_key>" | ||
method : "create_user" | ||||
args : { | ||||
"username" : "<username>", | ||||
r2531 | "email" : "<useremail>", | |||
|
r1592 | "password" : "<password>", | ||
r2531 | "firstname" : "<firstname> = Optional(None)", | |||
"lastname" : "<lastname> = Optional(None)", | ||||
"active" : "<bool> = Optional(True)", | ||||
"admin" : "<bool> = Optional(False)", | ||||
"ldap_dn" : "<ldap_dn> = Optional(None)" | ||||
|
r1592 | } | ||
r1500 | ||||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
|
r1592 | result: { | ||
r2531 | "msg" : "created new user `<username>`", | |||
r2365 | "user": { | |||
r2531 | "user_id" : "<user_id>", | |||
r2365 | "username" : "<username>", | |||
"firstname": "<firstname>", | ||||
"lastname" : "<lastname>", | ||||
"email" : "<email>", | ||||
r2531 | "emails": "<list_of_all_additional_emails>", | |||
r2365 | "active" : "<bool>", | |||
"admin" :Â "<bool>", | ||||
"ldap_dn" : "<ldap_dn>", | ||||
"last_login": "<last_login>", | ||||
}, | ||||
|
r1592 | } | ||
error: null | ||||
r1982 | ||||
r2002 | update_user | |||
----------- | ||||
r3224 | updates given user if such user exists. This command can | |||
r2002 | be executed only using api_key belonging to user with admin rights. | |||
INPUT:: | ||||
r2143 | id : <id_for_response> | |||
r2002 | api_key : "<api_key>" | |||
method : "update_user" | ||||
args : { | ||||
r2009 | "userid" : "<user_id or username>", | |||
r3162 | "username" : "<username> = Optional(None)", | |||
"email" : "<useremail> = Optional(None)", | ||||
"password" : "<password> = Optional(None)", | ||||
"firstname" : "<firstname> = Optional(None)", | ||||
"lastname" : "<lastname> = Optional(None)", | ||||
"active" : "<bool> = Optional(None)", | ||||
"admin" : "<bool> = Optional(None)", | ||||
"ldap_dn" : "<ldap_dn> = Optional(None)" | ||||
r2002 | } | |||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r2002 | result: { | |||
r2507 | "msg" : "updated user ID:<userid> <username>", | |||
"user": { | ||||
r2531 | "user_id" : "<user_id>", | |||
r2507 | "username" : "<username>", | |||
"firstname": "<firstname>", | ||||
"lastname" : "<lastname>", | ||||
"email" : "<email>", | ||||
r2531 | "emails": "<list_of_all_additional_emails>", | |||
r2507 | "active" : "<bool>", | |||
"admin" :Â "<bool>", | ||||
"ldap_dn" : "<ldap_dn>", | ||||
"last_login": "<last_login>", | ||||
r3224 | }, | |||
r2365 | } | |||
error: null | ||||
delete_user | ||||
----------- | ||||
r3224 | deletes givenuser if such user exists. This command can | |||
r2365 | be executed only using api_key belonging to user with admin rights. | |||
INPUT:: | ||||
id : <id_for_response> | ||||
api_key : "<api_key>" | ||||
method : "delete_user" | ||||
args : { | ||||
"userid" : "<user_id or username>", | ||||
} | ||||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r2365 | result: { | |||
r2531 | "msg" : "deleted user ID:<userid> <username>", | |||
"user": null | ||||
r2002 | } | |||
error: null | ||||
|
r1592 | get_users_group | ||
--------------- | ||||
|
r3410 | Gets an existing user group. This command can be executed only using api_key | ||
|
r1592 | belonging to user with admin rights. | ||
r1982 | ||||
|
r1592 | INPUT:: | ||
r2143 | id : <id_for_response> | |||
|
r1592 | api_key : "<api_key>" | ||
method : "get_users_group" | ||||
args : { | ||||
|
r3410 | "usersgroupid" : "<user group id or name>" | ||
|
r1592 | } | ||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
|
r1592 | result : None if group not exist | ||
{ | ||||
r2531 | "users_group_id" : "<id>", | |||
"group_name" : "<groupname>", | ||||
"active": "<bool>", | ||||
|
r1592 | "members" : [ | ||
r3224 | { | |||
r2531 | "user_id" : "<user_id>", | |||
r1843 | "username" : "<username>", | |||
"firstname": "<firstname>", | ||||
"lastname" : "<lastname>", | ||||
"email" : "<email>", | ||||
r2531 | "emails": "<list_of_all_additional_emails>", | |||
r1843 | "active" : "<bool>", | |||
"admin" :Â "<bool>", | ||||
r2531 | "ldap_dn" : "<ldap_dn>", | |||
"last_login": "<last_login>", | ||||
r1843 | }, | |||
… | ||||
] | ||||
|
r1592 | } | ||
error : null | ||||
r1982 | ||||
r1843 | get_users_groups | |||
---------------- | ||||
|
r3410 | Lists all existing user groups. This command can be executed only using | ||
r1843 | api_key belonging to user with admin rights. | |||
r1982 | ||||
r1843 | INPUT:: | |||
r2143 | id : <id_for_response> | |||
r1843 | api_key : "<api_key>" | |||
method : "get_users_groups" | ||||
args : { } | ||||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r1843 | result : [ | |||
{ | ||||
r2531 | "users_group_id" : "<id>", | |||
"group_name" : "<groupname>", | ||||
"active": "<bool>", | ||||
}, | ||||
… | ||||
r1843 | ] | |||
error : null | ||||
r1500 | create_users_group | |||
------------------ | ||||
|
r3410 | Creates new user group. This command can be executed only using api_key | ||
r1500 | belonging to user with admin rights | |||
r1982 | ||||
r1500 | INPUT:: | |||
r2143 | id : <id_for_response> | |||
|
r1592 | api_key : "<api_key>" | ||
method : "create_users_group" | ||||
args: { | ||||
r3714 | "group_name": "<groupname>", | |||
"owner" : "<onwer_name_or_id = Optional(=apiuser)>", | ||||
"active": "<bool> = Optional(True)" | ||||
|
r1592 | } | ||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
|
r1592 | result: { | ||
|
r3410 | "msg": "created new user group `<groupname>`", | ||
r2531 | "users_group": { | |||
"users_group_id" : "<id>", | ||||
"group_name" : "<groupname>", | ||||
"active": "<bool>", | ||||
}, | ||||
|
r1592 | } | ||
error: null | ||||
r1982 | ||||
r1793 | add_user_to_users_group | |||
----------------------- | ||||
|
r1592 | |||
|
r3410 | Adds a user to a user group. If user exists in that group success will be | ||
r1989 | `false`. This command can be executed only using api_key | |||
|
r1592 | belonging to user with admin rights | ||
r1982 | ||||
|
r1592 | INPUT:: | ||
r2143 | id : <id_for_response> | |||
|
r1592 | api_key : "<api_key>" | ||
method : "add_user_users_group" | ||||
args: { | ||||
|
r3410 | "usersgroupid" : "<user group id or name>", | ||
r2531 | "userid" : "<user_id or username>", | |||
|
r1592 | } | ||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
|
r1592 | result: { | ||
r1989 | "success": True|False # depends on if member is in group | |||
|
r3410 | "msg": "added member `<username>` to user group `<groupname>` | | ||
r1989 | User is already in that group" | |||
} | ||||
error: null | ||||
remove_user_from_users_group | ||||
---------------------------- | ||||
|
r3410 | Removes a user from a user group. If user is not in given group success will | ||
r3224 | be `false`. This command can be executed only | |||
r1989 | using api_key belonging to user with admin rights | |||
INPUT:: | ||||
r2143 | id : <id_for_response> | |||
r1989 | api_key : "<api_key>" | |||
method : "remove_user_from_users_group" | ||||
args: { | ||||
|
r3410 | "usersgroupid" : "<user group id or name>", | ||
r2531 | "userid" : "<user_id or username>", | |||
r1989 | } | |||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r1989 | result: { | |||
"success": True|False, # depends on if member is in group | ||||
|
r3410 | "msg": "removed member <username> from user group <groupname> | | ||
r1989 | User wasn't in group" | |||
|
r1592 | } | ||
error: null | ||||
r1982 | ||||
r1843 | get_repo | |||
-------- | ||||
r2146 | Gets an existing repository by it's name or repository_id. Members will return | |||
r3224 | either users_group or user associated to that repository. This command can be | |||
executed only using api_key belonging to user with admin | ||||
r3163 | rights or regular user that have at least read access to repository. | |||
r1843 | ||||
r1982 | ||||
r1843 | INPUT:: | |||
r2143 | id : <id_for_response> | |||
r1843 | api_key : "<api_key>" | |||
method : "get_repo" | ||||
args: { | ||||
r2010 | "repoid" : "<reponame or repo_id>" | |||
r1843 | } | |||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r1843 | result: None if repository does not exist or | |||
{ | ||||
r3115 | "repo_id" : "<repo_id>", | |||
"repo_name" : "<reponame>" | ||||
"repo_type" : "<repo_type>", | ||||
"clone_uri" : "<clone_uri>", | ||||
"enable_downloads": "<bool>", | ||||
"enable_locking": "<bool>", | ||||
r3224 | "enable_statistics": "<bool>", | |||
r3115 | "private": "<bool>", | |||
r3224 | "created_on" : "<date_time_created>", | |||
r3115 | "description" : "<description>", | |||
"landing_rev": "<landing_rev>", | ||||
r3174 | "last_changeset": { | |||
"author": "<full_author>", | ||||
"date": "<date_time_of_commit>", | ||||
"message": "<commit_message>", | ||||
"raw_id": "<raw_id>", | ||||
"revision": "<numeric_revision>", | ||||
"short_id": "<short_id>" | ||||
} | ||||
r3115 | "owner": "<repo_owner>", | |||
"fork_of": "<name_of_fork_parent>", | ||||
r1843 | "members" : [ | |||
r3224 | { | |||
r3213 | "type": "user", | |||
r3174 | "user_id" : "<user_id>", | |||
"username" : "<username>", | ||||
"firstname": "<firstname>", | ||||
"lastname" : "<lastname>", | ||||
"email" : "<email>", | ||||
"emails": "<list_of_all_additional_emails>", | ||||
"active" : "<bool>", | ||||
"admin" :Â "<bool>", | ||||
"ldap_dn" : "<ldap_dn>", | ||||
"last_login": "<last_login>", | ||||
r1843 | "permission" : "repository.(read|write|admin)" | |||
}, | ||||
… | ||||
r3224 | { | |||
r3213 | "type": "users_group", | |||
r1843 | "id" : "<usersgroupid>", | |||
"name" : "<usersgroupname>", | ||||
"active": "<bool>", | ||||
"permission" : "repository.(read|write|admin)" | ||||
}, | ||||
… | ||||
] | ||||
r3213 | "followers": [ | |||
{ | ||||
"user_id" : "<user_id>", | ||||
"username" : "<username>", | ||||
"firstname": "<firstname>", | ||||
"lastname" : "<lastname>", | ||||
"email" : "<email>", | ||||
"emails": "<list_of_all_additional_emails>", | ||||
"ip_addresses": "<list_of_ip_addresses_for_user>", | ||||
"active" : "<bool>", | ||||
"admin" :Â "<bool>", | ||||
"ldap_dn" : "<ldap_dn>", | ||||
r3224 | "last_login": "<last_login>", | |||
r3213 | }, | |||
r3224 | … | |||
r3213 | ] | |||
r1843 | } | |||
error: null | ||||
r1982 | ||||
|
r1592 | get_repos | ||
--------- | ||||
r3224 | Lists all existing repositories. This command can be executed only using | |||
api_key belonging to user with admin rights or regular user that have | ||||
r3163 | admin, write or read access to repository. | |||
|
r1592 | |||
r1982 | ||||
|
r1592 | INPUT:: | ||
r2143 | id : <id_for_response> | |||
|
r1592 | api_key : "<api_key>" | ||
method : "get_repos" | ||||
args: { } | ||||
r1500 | ||||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
|
r1592 | result: [ | ||
{ | ||||
r3115 | "repo_id" : "<repo_id>", | |||
"repo_name" : "<reponame>" | ||||
"repo_type" : "<repo_type>", | ||||
"clone_uri" : "<clone_uri>", | ||||
"private": : "<bool>", | ||||
r3224 | "created_on" : "<datetimecreated>", | |||
r3115 | "description" : "<description>", | |||
"landing_rev": "<landing_rev>", | ||||
"owner": "<repo_owner>", | ||||
"fork_of": "<name_of_fork_parent>", | ||||
"enable_downloads": "<bool>", | ||||
"enable_locking": "<bool>", | ||||
r3224 | "enable_statistics": "<bool>", | |||
|
r1592 | }, | ||
… | ||||
] | ||||
error: null | ||||
r1810 | get_repo_nodes | |||
-------------- | ||||
r3224 | returns a list of nodes and it's children in a flat list for a given path | |||
at given revision. It's possible to specify ret_type to show only `files` or | ||||
`dirs`. This command can be executed only using api_key belonging to user | ||||
r1810 | with admin rights | |||
r1982 | ||||
r1810 | INPUT:: | |||
r2143 | id : <id_for_response> | |||
r1810 | api_key : "<api_key>" | |||
method : "get_repo_nodes" | ||||
args: { | ||||
r2531 | "repoid" : "<reponame or repo_id>" | |||
r1810 | "revision" : "<revision>", | |||
"root_path" : "<root_path>", | ||||
r2531 | "ret_type" : "<ret_type> = Optional('all')" | |||
r1810 | } | |||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r1810 | result: [ | |||
{ | ||||
"name" : "<name>" | ||||
"type" : "<type>", | ||||
}, | ||||
… | ||||
] | ||||
error: null | ||||
|
r1592 | create_repo | ||
----------- | ||||
r3163 | Creates a repository. If repository name contains "/", all needed repository | |||
r3224 | 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. This command can be executed only using api_key belonging to user with admin | ||||
r3163 | rights or regular user that have create repository permission. Regular users | |||
cannot specify owner parameter | ||||
|
r1592 | |||
r1982 | ||||
|
r1592 | INPUT:: | ||
r2143 | id : <id_for_response> | |||
|
r1592 | api_key : "<api_key>" | ||
method : "create_repo" | ||||
args: { | ||||
r3115 | "repo_name" : "<reponame>", | |||
r3163 | "owner" : "<onwer_name_or_id = Optional(=apiuser)>", | |||
r3115 | "repo_type" : "<repo_type> = Optional('hg')", | |||
"description" : "<description> = Optional('')", | ||||
"private" : "<bool> = Optional(False)", | ||||
"clone_uri" : "<clone_uri> = Optional(None)", | ||||
"landing_rev" : "<landing_rev> = Optional('tip')", | ||||
"enable_downloads": "<bool> = Optional(False)", | ||||
"enable_locking": "<bool> = Optional(False)", | ||||
"enable_statistics": "<bool> = Optional(False)", | ||||
|
r1592 | } | ||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r1843 | result: { | |||
r2531 | "msg": "Created new repository `<reponame>`", | |||
r2378 | "repo": { | |||
r3115 | "repo_id" : "<repo_id>", | |||
"repo_name" : "<reponame>" | ||||
"repo_type" : "<repo_type>", | ||||
"clone_uri" : "<clone_uri>", | ||||
"private": : "<bool>", | ||||
r3224 | "created_on" : "<datetimecreated>", | |||
r3115 | "description" : "<description>", | |||
"landing_rev": "<landing_rev>", | ||||
r3122 | "owner": "<username or user_id>", | |||
r3115 | "fork_of": "<name_of_fork_parent>", | |||
"enable_downloads": "<bool>", | ||||
"enable_locking": "<bool>", | ||||
r3224 | "enable_statistics": "<bool>", | |||
r2378 | }, | |||
r1843 | } | |||
|
r1592 | error: null | ||
r1982 | ||||
r3122 | fork_repo | |||
--------- | ||||
r3163 | Creates a fork of given repo. In case of using celery this will | |||
r3122 | immidiatelly return success message, while fork is going to be created | |||
r3163 | asynchronous. This command can be executed only using api_key belonging to | |||
user with admin rights or regular user that have fork permission, and at least | ||||
read access to forking repository. Regular users cannot specify owner parameter. | ||||
r3122 | ||||
INPUT:: | ||||
id : <id_for_response> | ||||
api_key : "<api_key>" | ||||
method : "fork_repo" | ||||
args: { | ||||
"repoid" : "<reponame or repo_id>", | ||||
"fork_name": "<forkname>", | ||||
r3163 | "owner": "<username or user_id = Optional(=apiuser)>", | |||
r3122 | "description": "<description>", | |||
"copy_permissions": "<bool>", | ||||
"private": "<bool>", | ||||
"landing_rev": "<landing_rev>" | ||||
r3224 | ||||
r3122 | } | |||
OUTPUT:: | ||||
id : <id_given_in_input> | ||||
result: { | ||||
"msg": "Created fork of `<reponame>` as `<forkname>`", | ||||
"success": true | ||||
} | ||||
error: null | ||||
r2003 | delete_repo | |||
----------- | ||||
r3641 | Deletes a repository. This command can be executed only using api_key belonging | |||
to user with admin rights or regular user that have admin access to repository. | ||||
When `forks` param is set it's possible to detach or delete forks of deleting | ||||
repository | ||||
r2003 | ||||
INPUT:: | ||||
r2143 | id : <id_for_response> | |||
r2003 | api_key : "<api_key>" | |||
method : "delete_repo" | ||||
args: { | ||||
r3641 | "repoid" : "<reponame or repo_id>", | |||
"forks" : "`delete` or `detach` = Optional(None)" | ||||
r2003 | } | |||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r2003 | result: { | |||
r2531 | "msg": "Deleted repository `<reponame>`", | |||
"success": true | ||||
r2003 | } | |||
error: null | ||||
r1982 | grant_user_permission | |||
--------------------- | ||||
|
r1592 | |||
r1982 | Grant permission for user on given repository, or update existing one | |||
r3224 | if found. This command can be executed only using api_key belonging to user | |||
r1982 | with admin rights. | |||
|
r1592 | |||
INPUT:: | ||||
r2143 | id : <id_for_response> | |||
|
r1592 | api_key : "<api_key>" | ||
r1982 | method : "grant_user_permission" | |||
|
r1592 | args: { | ||
r2531 | "repoid" : "<reponame or repo_id>" | |||
"userid" : "<username or user_id>" | ||||
r1982 | "perm" : "(repository.(none|read|write|admin))", | |||
} | ||||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r1982 | result: { | |||
r2531 | "msg" : "Granted perm: `<perm>` for user: `<username>` in repo: `<reponame>`", | |||
"success": true | ||||
r1982 | } | |||
error: null | ||||
revoke_user_permission | ||||
---------------------- | ||||
r3224 | Revoke permission for user on given repository. This command can be executed | |||
r1982 | only using api_key belonging to user with admin rights. | |||
INPUT:: | ||||
r2143 | id : <id_for_response> | |||
r1982 | api_key : "<api_key>" | |||
method : "revoke_user_permission" | ||||
args: { | ||||
r2531 | "repoid" : "<reponame or repo_id>" | |||
"userid" : "<username or user_id>" | ||||
|
r1592 | } | ||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r1843 | result: { | |||
r2531 | "msg" : "Revoked perm for user: `<username>` in repo: `<reponame>`", | |||
"success": true | ||||
r1843 | } | |||
|
r1592 | error: null | ||
r1793 | ||||
r1982 | ||||
grant_users_group_permission | ||||
---------------------------- | ||||
r1793 | ||||
|
r3410 | Grant permission for user group on given repository, or update | ||
r3224 | existing one if found. This command can be executed only using | |||
r1982 | api_key belonging to user with admin rights. | |||
r1793 | ||||
INPUT:: | ||||
r2143 | id : <id_for_response> | |||
r1793 | api_key : "<api_key>" | |||
r1982 | method : "grant_users_group_permission" | |||
args: { | ||||
r2531 | "repoid" : "<reponame or repo_id>" | |||
|
r3410 | "usersgroupid" : "<user group id or name>" | ||
r1982 | "perm" : "(repository.(none|read|write|admin))", | |||
} | ||||
OUTPUT:: | ||||
r2531 | id : <id_given_in_input> | |||
r1982 | result: { | |||
r2531 | "msg" : "Granted perm: `<perm>` for group: `<usersgroupname>` in repo: `<reponame>`", | |||
"success": true | ||||
r1982 | } | |||
error: null | ||||
r3224 | ||||
r1982 | revoke_users_group_permission | |||
----------------------------- | ||||
|
r3410 | Revoke permission for user group on given repository.This command can be | ||
r1982 | executed only using api_key belonging to user with admin rights. | |||
INPUT:: | ||||
r2143 | id : <id_for_response> | |||
r1982 | api_key : "<api_key>" | |||
method : "revoke_users_group_permission" | ||||
r1793 | args: { | |||
r2531 | "repoid" : "<reponame or repo_id>" | |||
|
r3410 | "usersgroupid" : "<user group id or name>" | ||
r1843 | } | |||
r1982 | ||||
r1843 | OUTPUT:: | |||
r1982 | ||||
r2531 | id : <id_given_in_input> | |||
r1843 | result: { | |||
r2531 | "msg" : "Revoked perm for group: `<usersgroupname>` in repo: `<reponame>`", | |||
"success": true | ||||
r1843 | } | |||
r3224 | error: null | |||