# Web API
- [Seafile Web API V2](#)
- [API Basics](#)
- [Status Code](#)
- [Quick Start](#)
- [Account](#)
- [List Accounts(Admin only)](#)
- [Get Account Info(Admin only)](#)
- [Create Account(Admin only)](#)
- [Update Account(Admin only)](#)
- [Delete Account(Admin only)](#)
- [Check Account Info](#)
- [Get Server Information](#)
- [Starred Files](#)
- [List starred files](#)
- [Star A File](#)
- [Unstar A File](#)
- [User Messages](#)
- [List User Messages](#)
- [Reply A User Message](#)
- [Count Unseen Messages](#)
- [Group](#)
- [List Groups](#)
- [Add A Group](#)
- [Delete Group](#)
- [Rename Group](#)
- [Group Member](#)
- [Add A Group Member](#)
- [Delete A Group Member](#)
- [Group Message](#)
- [Get Group Messages](#)
- [Get Group Message Detail](#)
- [Send A Group Message](#)
- [Reply A Group Message](#)
- [Get Group Message Replies](#)
- [Share](#)
- [File Share Link](#)
- [List File Share Links](#)
- [Create File Share Link](#)
- [Delete File Share Link](#)
- [List Direntry in Dir Download Link](#)
- [Shared Libraries](#)
- [List Shared Libraries](#)
- [List Be Shared Libraries](#)
- [Share A Library](#)
- [Unshare A Library](#)
- [Shared Files](#)
- [List Shared Files](#)
- [Download Shared File](#)
- [Get Shared File Detail](#)
- [Delete Shared File](#)
- [Download Private Shared File](#)
- [Get Private Shared File Detail](#)
- [Library](#)
- [Library](#)
- [Get Default Library](#)
- [Create Default Library](#)
- [List Libraries](#)
- [Get Library Info](#)
- [Get Library Owner](#)
- [Get Library History](#)
- [Create Library](#)
- [Check/Create Sub Library](#)
- [Delete Library](#)
- [Decrypt Library](#)
- [Create Public Library](#)
- [Remove Public Library](#)
- [Fetch library download info](#)
- [List Virtual Libraries](#)
- [Search Libraries](#)
- [File](#)
- [Download File](#)
- [Get File Detail](#)
- [Get File History](#)
- [Download File From a Revision](#)
- [Create File](#)
- [Rename File](#)
- [Lock File](#)
- [Unlock File](#)
- [Move File](#)
- [Copy File](#)
- [Revert File](#)
- [Delete File](#)
- [Upload File](#)
- [Get Upload Link](#)
- [Upload File](#)
- [Update file](#)
- [Get Update Link](#)
- [Update File](#)
- [Get Upload Blocks Link](#)
- [Get Update Blocks Link](#)
- [Directory](#)
- [List Directory Entries](#)
- [Create New Directory](#)
- [Rename Directory](#)
- [Delete Directory](#)
- [Download Directory](#)
- [Share Directory](#)
- [Batch Delete](#)
- [Get Avatar](#)
- [Get User Avatar](#)
- [Get Group Avatar](#)
- [Get Thumbnail](#)
- [Get Thumbnail Image](#)
- [List Group And Contacts](#)
- [Get File Activities](#)
- [Add Organization](#)
# Seafile Web API V2
### API Basics
All API calls must be authenticated with a valid Seafile API key.
~~~
curl -H 'Authorization: Token 24fd3c026886e3121b2ca630805ed425c272cb96' https://cloud.seafile.com/api2/auth/ping/
~~~
The api key can be retrieved by the obtain auth api. See the [Quick Start](#) for details.
For each API, we provide `curl` examples to illustrate the usage.
### Status Code
- 200: OK
- 201: CREATED
- 202: ACCEPTED
- 301: MOVED_PERMANENTLY
- 400: BAD_REQUEST
- 403: FORBIDDEN
- 404: NOT_FOUND
- 409: CONFLICT
- 429: TOO_MANY_REQUESTS
- 440: REPO_PASSWD_REQUIRED
- 441: REPO_PASSWD_MAGIC_REQUIRED
- 500: INTERNAL_SERVER_ERROR
- 520: OPERATION_FAILED
### Quick Start
**ping**
~~~
curl https://cloud.seafile.com/api2/ping/
"pong"
~~~
**obtain auth token**
~~~
curl -d "username=username@example.com&password=123456" https://cloud.seafile.com/api2/auth-token/
{"token": "24fd3c026886e3121b2ca630805ed425c272cb96"}
~~~
**auth ping**
~~~
curl -H 'Authorization: Token 24fd3c026886e3121b2ca630805ed425c272cb96' https://cloud.seafile.com/api2/auth/ping/
"pong"
~~~
### Account
### List Accounts
**GET**[https://cloud.seafile.com/api2/accounts/](https://cloud.seafile.com/api2/accounts/)
**Request parameters**
- start (default to 0)
- limit (default to 100)
- scope (default None, accepted values: 'LDAP' or 'DB')
To retrieve all users, just set both `start` and `limit` to `-1`.
If scope parameter is passed then accounts will be searched inside the specific scope, otherwise it will be used the old approach: first LDAP and, if no account is found, DB.
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/accounts/
~~~
**Sample response**
~~~
[
{
"email": "foo@foo.com"
},
{
"email": "bar@bar.com"
}
]
~~~
**Errors**
- 403 Permission error, only administrator can perform this action
### Get Account Info
**GET**[https://cloud.seafile.com/api2/accounts/{email}/](https://cloud.seafile.com/api2/accounts/{email}/)
**Request parameters**
**Sample request**
~~~
curl -v -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/accounts/user@mail.com/
~~~
**Sample response**
~~~
{
"is_staff": false,
"is_active": true,
"id": 2,
"create_time": 1356061187741686,
"usage": 651463187,
"total": 107374182400,
"email": "user@mail.com"
}
~~~
**Errors**
- 403 Permission error, only administrator can perform this action
### Check Account Info
**GET**[https://cloud.seafile.com/api2/account/info/](https://cloud.seafile.com/api2/account/info/)
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/account/info/
~~~
**Sample response**
~~~
{
"usage": 26038531,
"total": 104857600,
"email": "user@example.com"
}
~~~
**Errors**
- 403 Invalid token
### Create Account
**PUT**[https://cloud.seafile.com/api2/accounts/{email}/](https://cloud.seafile.com/api2/accounts/{email}/)
**Request parameters**
- password
- is_staff (defaults to False)
- is_active (defaults to True)
**Sample request**
~~~
curl -v -X PUT -d "password=123456" -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/accounts/newaccount@gmail.com/
~~~
**Sample response**
~~~
...
< HTTP/1.0 201 CREATED
< Location: https://cloud.seafile.com/api2/accounts/newaccount@gmail.com/
...
"success"
~~~
**Success**
~~~
Response code 201(Created) is returned and the Location header provides shared link.
~~~
**Errors**
- 403 Permission error, only administrator can perform this action
### Update Account
**PUT**[https://cloud.seafile.com/api2/accounts/{email}/](https://cloud.seafile.com/api2/accounts/{email}/)
**Request parameters**
At least one of followings:
- password
- is_staff
- is_active
- name
- note
- storage
**Sample request**
~~~
curl -v -X PUT -d "password=654321&is_staff=true&storage=1073741824" -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/accounts/user@mail.com/
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
"success"
~~~
**Success**
~~~
Response code 200(OK) is returned.
~~~
**Errors**
- 400 Bad Request, keyword password is required
- 403 Permission error, only administrator can perform this action
### Delete Account
**DELETE**[https://cloud.seafile.com/api2/accounts/{email}/](https://cloud.seafile.com/api2/accounts/{email}/)
**Sample request**
~~~
curl -v -X DELETE -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/accounts/newaccount@gmail.com/
~~~
**Sample response**
~~~
"success"
~~~
**Errors**
- 403 Permission error, only administrator can perform this action
### Get Server Information
**GET**[https://cloud.seafile.com/api2/server-info](https://cloud.seafile.com/api2/server-info)
*Note*:
- No authentication required.
- Added in seafile community edition server `4.0.5` or pro edition server `4.0.3`
**Sample request**
~~~
curl https://cloud.seafile.com/api2/server-info/
~~~
**Sample response**
Sample response from a seafile community edition server:
~~~
{
"version": "4.0.6",
"features": [
"seafile-basic",
]
}
~~~
Sample response from a seafile pro edition server:
~~~
{
"version": "4.0.6",
"features": [
"seafile-basic",
"seafile-pro",
"office-preview",
"file-search"
]
}
~~~
### Starred Files
### List starred files
**GET**[https://cloud.seafile.com/api2/starredfiles/](https://cloud.seafile.com/api2/starredfiles/)
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e6199b477fd" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/starredfiles/
~~~
**Sample response**
~~~
[
{
"repo": "99b758e6-91ab-4265-b705-925367374cf0",
"mtime": 1355198150,
"org": -1,
"path": "/foo/bar.doc",
"dir": false,
"size": 0
},
{
"repo": "99b758e6-91ab-4265-b705-925367374cf0",
"mtime": 1353751237,
"org": -1,
"path": "/add_folder-blue.png",
"dir": false,
"size": 3170
}
]
~~~
### Star A File
**POST**[https://cloud.seafile.com/api2/starredfiles/](https://cloud.seafile.com/api2/starredfiles/)
**Request parameters**
- repo_id (post)
- p (post)
**Sample request**
~~~
curl -v -d "repo_id=dae8cecc-2359-4d33-aa42-01b7846c4b32&p=/foo.md" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/starredfiles/
~~~
**Sample response**
~~~
...
< HTTP/1.0 201 CREATED
< Location: https://cloud.seafile.com/api2/starredfiles/
...
"success"
~~~
**Success**
Response code is 201(Created) and Location header provides url of starred file list.
**Errors**
- 400 `repo_id` or `p` is missing, or `p` is not valid file path(e.g. /foo/bar/).
### Unstar A File
**DELETE**[https://cloud.seafile.com/api2/starredfiles/](https://cloud.seafile.com/api2/starredfiles/)
**Request parameters**
- repo_id
- p
**Sample request**
~~~
curl -X DELETE -v -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' 'https://cloud.seafile.com/api2/starredfiles/?repo_id=dae8cecc-2359-4d33-aa42-01b7846c4b32&p=/foo.md'
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
"success"
~~~
**Success**
Response code is 200(OK), and a string named "success" is returned.
**Errors**
- 400 `repo_id` or `p` is missing, or `p` is not valid file path(e.g. /foo/bar/).
### User Messages
### List User Messages
**GET**[https://cloud.seafile.com/api2/user/msgs/{id_or_email}/](https://cloud.seafile.com/api2/user/msgs/{id_or_email}/)
**Request parameters**
- id_or_email
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/user/msgs/2/"
~~~
**Sample response**
~~~
{
"to_email": "user@example.com",
"next_page": -1,
"msgs": [
{
"attachments": [
{
"path": "/123.md",
"repo_id": "c7436518-5f46-4296-97db-2fcba4c8c8db"
}
],
"timestamp": 1398233096,
"from_email": "user@example.com",
"msgid": 3,
"msg": "another test msg",
"nickname": "user"
},
{
"attachments": [],
"timestamp": 1398233067,
"from_email": "user@example.com",
"msgid": 2,
"msg": "a test msg",
"nickname": "user"
}
]
}
~~~
**Errors**
- 404 user not found
### Reply A User Message
**POST**[https://cloud.seafile.com/api2/user/msgs/{id_or_email}/](https://cloud.seafile.com/api2/user/msgs/{id_or_email}/)
**Request parameters**
- id_or_email
- message
**Sample request**
~~~
curl -d "message=this is a user msg reply" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/user/msgs/2/"
~~~
**Sample response**
~~~
{
"msgid": 4
}
~~~
**Errors**
- 404 user not found
### Count Unseen Messages
**GET**[https://cloud.seafile.com/api2/unseen_messages/](https://cloud.seafile.com/api2/unseen_messages/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/unseen_messages/"
~~~
**Sample response**
~~~
{
"count": 1
}
~~~
### Group
### List Groups
**GET**[https://cloud.seafile.com/api2/groups/](https://cloud.seafile.com/api2/groups/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/groups/"
~~~
**Sample response**
~~~
{
"replynum": 0,
"groups": [
{
"ctime": 1398134171327948,
"creator": "user@example.com",
"msgnum": 0,
"mtime": 1398231100,
"id": 1,
"name": "lian"
},
{
"ctime": 1398236081042441,
"creator": "user@example.com",
"msgnum": 0,
"mtime": 0,
"id": 2,
"name": "123"
}
]
}
~~~
### Add A Group
**PUT**[https://cloud.seafile.com/api2/groups/](https://cloud.seafile.com/api2/groups/)
**Request parameters**
- group_name
**Sample request**
~~~
curl -X PUT -d "group_name=newgroup" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/groups/"
~~~
**Sample response**
~~~
{"group_id": 3, "success": true}
~~~
**Errors**
- 400 There is already a group with that name.
### Delete Group
**DELETE**[https://cloud.seafile.com/api2/groups/{group_id}/](https://cloud.seafile.com/api2/groups/{group_id}/)
**Request parameters**
None
**Sample request**
~~~
curl -X DELETE -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/groups/1/"
~~~
**Success**
200 if everything is fine.
**Errors**
- 400 if ad group id format
- 404 if Group not found
- 403 if Forbid to delete group
- 520 if Failed to remove group (generic error)
### Rename Group
**POST**[https://cloud.seafile.com/api2/groups/{group_id}/](https://cloud.seafile.com/api2/groups/{group_id}/)
**Request parameters**
- operation (value must be 'rename')
- newname (the new name for the group)
**Sample request**
~~~
curl -d "operation=rename&newname=pinkfloyd_lovers" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/groups/1/"
~~~
**Success**
200 if everything is fine.
**Errors**
- 404 if Group not found
- 403 if Forbid to rename group
- 400 if Newname is missing or if Group name is not valid of if There is already a group with that name or Operation can only be rename.
### Group Member
#### Add A Group Member
**PUT**[https://cloud.seafile.com/api2/groups/{group_id}/members/](https://cloud.seafile.com/api2/groups/{group_id}/members/)
**Request parameters**
- user_name
**Sample request**
~~~
curl -X PUT -d "user_name=user@example.com"-H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/groups/1/members/"
~~~
**Sample response**
~~~
{"success": true}
~~~
**Errors**
- 400 invalid group id
- 403 only administrators can add group members
- 404 unable to find group
#### Delete A Group Member
**DELETE**[https://cloud.seafile.com/api2/groups/{group_id}/members/](https://cloud.seafile.com/api2/groups/{group_id}/members/)
**Request parameters**
- user_name
**Sample request**
~~~
curl -X DELETE -d "user_name=user@example.com" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/groups/1/members/"
~~~
**Sample response**
~~~
{"success": true}
~~~
**Errors**
- 400 invalid group id
- 403 only administrators can remove group members
- 404 unable to find group
### Group Message
#### Get Group Messages
**GET**[https://cloud.seafile.com/api2/group/msgs/{group_id}/](https://cloud.seafile.com/api2/group/msgs/{group_id}/)
**Request parameters**
- group_id
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/group/msgs/1/"
~~~
**Sample response**
~~~
{
"next_page": -1,
"msgs": [
{
"reply_cnt": 0,
"timestamp": 1398230602,
"replies": [],
"from_email": "user@example.com",
"msgid": 1,
"msg": "test discuss",
"nickname": "user"
}
]
}
~~~
#### Get Group Message Detail
**GET**[https://cloud.seafile.com/api2/group/{group_id}/msg/{msg_id}/](https://cloud.seafile.com/api2/group/{group_id}/msg/{msg_id}/)
**Request parameters**
- group_id
- msg_id
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/group/1/msg/1/"
~~~
**Sample response**
~~~
{
"reply_cnt": 2,
"timestamp": 1398230602,
"replies": [
{
"msg": "this is another test",
"timestamp": 1398232319,
"nickname": "user",
"msgid": 1,
"from_email": "user@example.com"
},
{
"msg": "this is another test",
"timestamp": 1398232508,
"nickname": "user",
"msgid": 3,
"from_email": "user@example.com"
}
],
"from_email": "user@example.com",
"msgid": 1,
"msg": "test discuss",
"nickname": "user"
}
~~~
**Errors**
- 404 message not found
#### Send A Group Message
**POST**[https://cloud.seafile.com/api2/group/msgs/{group_id}/](https://cloud.seafile.com/api2/group/msgs/{group_id}/)
**Request parameters**
- message
- group_id
- repo_id(optional)
- path(optional)
**Sample request**
~~~
curl -d "message=this is another test&repo_id=c7436518-5f46-4296-97db-2fcba4c8c8db&path=/123.md" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/group/msgs/1/"
~~~
**Sample response**
~~~
{
"msgid": 3
}
~~~
#### Reply A Group Message
**POST**[https://cloud.seafile.com/api2/group/{group_id}/msg/{msg_id}](https://cloud.seafile.com/api2/group/{group_id}/msg/{msg_id})
**Request parameters**
- group_id
- msg_id
- message
**Sample request**
~~~
curl -d "message=this is a reply" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/group/1/msg/1/"
~~~
**Sample response**
~~~
{
"msgid": 3
}
~~~
**Errors**
- 404 message not found
#### Get Group Message Replies
**GET**[https://cloud.seafile.com/api2/new_replies/](https://cloud.seafile.com/api2/new_replies/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/new_replies/"
~~~
**Sample response**
~~~
[
{
"reply_cnt": 1,
"timestamp": 1398231100,
"replies": [
{
"msg": "@user test reply",
"timestamp": 1398234493,
"nickname": "123",
"msgid": 5,
"from_email": "user@example.com"
}
],
"from_email": "user@example.com",
"att": {
"repo": "c7436518-5f46-4296-97db-2fcba4c8c8db",
"path": "/123.md",
"type": "file",
"src": "recommend"
},
"msgid": 3,
"msg": "this is another test",
"nickname": "user"
}
]
~~~
### Share
### File Share Link
#### List File Share Links
**GET**[https://cloud.seafile.com/api2/shared-links/](https://cloud.seafile.com/api2/shared-links/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/shared-links/"
~~~
**Sample response**
~~~
{"fileshares": [{"username": "user@example.com", "repo_id": "a582d3bc-bcf5-421e-9125-741fa56d18d4", "ctime": null, "s_type": "d", "token": "e410827494", "view_cnt": 0, "path": "/123/"}, {"username": "user@example.com", "repo_id": "affc837f-7fdd-4e91-b88a-32caf99897f2", "ctime": null, "s_type": "f", "token": "0ae587a7d1", "view_cnt": 0, "path": "/lian123.md"}]}
~~~
#### Create File Share Link
**PUT**[https://cloud.seafile.com/api2/repos/{repo-id}/file/shared-link/](https://cloud.seafile.com/api2/repos/{repo-id}/file/shared-link/)
**Request parameters**
- repo-id
- p (Path to the file)
- share_type (optional, `download` or `upload`, default `download`)
- password (optional)
- expire (optional)
**Sample request**
Create download link for file
~~~
curl -v -X PUT -d "p=/foo.md" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/afc3b694-7d4c-4b8a-86a4-89c9f3261b12/file/shared-link/
~~~
Create download link for directory with password and expire date
~~~
curl -v -X PUT -d "password=password&expire=6&p=/123/" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/afc3b694-7d4c-4b8a-86a4-89c9f3261b12/file/shared-link/
~~~
Create upload link for directory
~~~
curl -v -X PUT -d "share_type=upload&p=/123/" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/afc3b694-7d4c-4b8a-86a4-89c9f3261b12/file/shared-link/
~~~
**Sample response**
~~~
...
< HTTP/1.0 201 CREATED
< Location: https://cloud.seafile.com/f/9b437a7e55/
...
~~~
**Success**
~~~
Response code 201(Created) is returned and the Location header provides shared link.
~~~
**Errors**
- 400 Path is missing
- 400 Password(if link is encrypted) is missing
- 500 Internal server error
#### Delete File Share Link
**DELETE**[https://cloud.seafile.com/api2/shared-links/?t=0ae587a7d1](https://cloud.seafile.com/api2/shared-links/?t=0ae587a7d1)
**Request parameters**
- t
**Sample request**
~~~
curl -v -X DELETE -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/shared-links/?t=0ae587a7d1"
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
~~~
#### List Direntry in Dir Download Link
**GET**[https://cloud.seafile.com/api2/d/{token}/dir/](https://cloud.seafile.com/api2/d/{token}/dir/)
**Request parameters**
- token (upload link token)
- p (sub folder path)
- password (if link is encrypted)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/d/3af7c46595/dir/?p=/subfolder/"
~~~
**Sample response**
~~~
[{"mtime": 1436846750, "type": "dir", "name": "sadof", "id": "1806dbdb700b7bcd49e6275107c7ccf7b3ea1776"}, {"id": "bdb06f6de972c42893fda590ac954988b562429c", "mtime": 1436431020, "type": "file", "name": "test.mdert", "size": 20}]
~~~
### Shared Libraries
#### List Shared Libraries
**GET**[https://cloud.seafile.com/api2/shared-repos/](https://cloud.seafile.com/api2/shared-repos/)
**Sample request**
~~~
curl -v -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/shared-repos/
~~~
**Sample response**
~~~
[{"repo_id": "7d42522b-1f6f-465d-b9c9-879f8eed7c6c", "share_type": "personal", "permission": "rw", "encrypted": false, "user": "user@example.com", "last_modified": 1361072500, "repo_desc": "ff", "group_id": 0, "repo_name": "\u6d4b\u8bd5\u4e2d\u6587pdf"}, {"repo_id": "79bb29cd-b683-4844-abaf-433952723ca5", "share_type": "group", "permission": "rw", "encrypted": false, "user": "user@example.com", "last_modified": 1359182468, "repo_desc": "test", "group_id": 1, "repo_name": "test_enc"}]
~~~
#### List Be Shared Libraries
**GET**[https://cloud.seafile.com/api2/beshared-repos/](https://cloud.seafile.com/api2/beshared-repos/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/beshared-repos/"
~~~
**Sample response**
~~~
"[{"user": "user@example.com", "repo_id": "989e3952-9d6f-4427-ab16-4bf9b53212eb", "share_type": "personal", "permission": "rw", "encrypted": false, "repo_desc": "lib shared to imwhatiam", "enc_version": false, "last_modified": 1398218747, "is_virtual": false, "group_id": 0, "repo_name": "lib shared to imwhatiam"}]"
~~~
#### Share A Library
**PUT**[https://cloud.seafile.com/api2/shared-repos/{repo-id}/](https://cloud.seafile.com/api2/shared-repos/{repo-id}/)
**Request parameters**
- share_type ('personal', 'group' or 'public')
- user (or users)
- group_id
- permission
If share_type is 'personal' then 'user' or 'users' param are required, if share_type is 'group' then 'group_id' parameter is required. If share_type is 'public' no other params is required.
'user' or 'users' parameters can be a comma separated list of emails, in this case the share will be done for more users at the same time. If a problem is encountered during multiple users sharing then the sharing process is aborted.
**Sample request**
~~~
curl -X PUT -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/shared-repos/7d42522b-1f6f-465d-b9c9-879f8eed7c6c/?share_type=group&user=user@example.com&group_id=1&permission=rw"
~~~
**Sample response**
~~~
"success"
~~~
#### Unshare A Library
**DELETE**[https://cloud.seafile.com/api2/shared-repos/{repo-id}/](https://cloud.seafile.com/api2/shared-repos/{repo-id}/)
**Request parameters**
- share_type ('personal', 'group' or 'public')
- user
- group_id
If share_type is 'personal' then 'user' param is required, if share_type is 'group' then 'group_id' parameter is required. If share_type is 'public' no other params is required.
**Sample request**
~~~
curl -X DELETE -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/shared-repos/7d42522b-1f6f-465d-b9c9-879f8eed7c6c/?share_type=personal&user=user@example.com&group_id=0"
~~~
**Sample response**
~~~
"success"
~~~
### Shared Files
#### List Shared Files
**GET**[https://cloud.seafile.com/api2/shared-files/](https://cloud.seafile.com/api2/shared-files/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/shared-files/"
~~~
**Sample response**
~~~
{"priv_share_in": [{"s_type": "f", "repo_id": "989e3952-9d6f-4427-ab16-4bf9b53212eb", "permission": "r", "to_user": "user@example.com", "token": "94aace406a", "from_user": "user@example.com", "path": "/lib.md"}], "priv_share_out": [{"s_type": "f", "repo_id": "affc837f-7fdd-4e91-b88a-32caf99897f2", "permission": "r", "to_user": "user@example.com", "token": "b7b31bc39b", "from_user": "user@example.com", "path": "/lian123.md"}]}
~~~
#### Download Shared File
**GET**[https://cloud.seafile.com/api2/f/{token}/](https://cloud.seafile.com/api2/f/{token}/)
**Request parameters**
- token(file share token)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/f/ad93cd0d66/"
~~~
**Sample response**
~~~
"http://192.168.1.101:8082/files/89223601/lib.md"
~~~
**Errors**
- 404 repo/token/file not found
- 520 OPERATION FAILED, fail to get file id by path
#### Get Shared File Detail
**GET**[https://cloud.seafile.com/api2/f/{token}/detail/](https://cloud.seafile.com/api2/f/{token}/detail/)
**Request parameters**
- token(file share token)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/f/ad93cd0d66/detail/"
~~~
**Sample response**
~~~
{"repo_id": "989e3952-9d6f-4427-ab16-4bf9b53212eb", "name": "lib.md", "mtime": 1398218747, "path": "/lib.md", "type": "file", "id": "0000000000000000000000000000000000000000", "size": 0}
~~~
**Errors**
- 404 repo/token/file not found
- 520 OPERATION FAILED, fail to get file id by path
#### Delete Shared File
**DELETE**[https://cloud.seafile.com/api2/shared-files/?t=0ae587a7d1](https://cloud.seafile.com/api2/shared-files/?t=0ae587a7d1)
**Request parameters**
- t
**Sample request**
~~~
curl -v -X DELETE -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/shared-files/?t=94aace406a"
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
~~~
#### Download Private Shared File
**GET**[https://cloud.seafile.com/api2/s/f/{token}/](https://cloud.seafile.com/api2/s/f/{token}/)
**Request parameters**
- token(private file share token)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/s/f/c5aa5f0219/"
~~~
**Sample response**
~~~
"http://192.168.1.101:8082/files/6960d5a4/lib.md"
~~~
**Errors**
- 404 repo/token/file not found
- 520 OPERATION FAILED, fail to get file id by path
#### Get Private Shared File Detail
**GET**[https://cloud.seafile.com/api2/s/f/{token}/detail/](https://cloud.seafile.com/api2/s/f/{token}/detail/)
**Request parameters**
- token(private file share token)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/s/f/c5aa5f0219/detail/"
~~~
**Sample response**
~~~
{"repo_id": "989e3952-9d6f-4427-ab16-4bf9b53212eb", "name": "lib.md", "shared_by": "user@example.com", "mtime": 1398218747, "path": "/lib.md", "type": "file", "id": "0000000000000000000000000000000000000000", "size": 0}
~~~
**Errors**
- 404 repo/token/file not found
- 520 OPERATION FAILED, fail to get file id by path
### Library
### Library
#### Get Default Library
**GET**[https://cloud.seafile.com/api2/default-repo/](https://cloud.seafile.com/api2/default-repo/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/default-repo/"
~~~
**Sample response**
~~~
{
"repo_id": "691b3e24-d05e-43cd-a9f2-6f32bd6b800e",
"exists": true
}
~~~
#### Create Default Library
**POST**[https://cloud.seafile.com/api2/default-repo/](https://cloud.seafile.com/api2/default-repo/)
**Sample request**
~~~
curl -X POST -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/default-repo/"
~~~
**Sample response**
~~~
{
"repo_id": "691b3e24-d05e-43cd-a9f2-6f32bd6b800e",
"exists": true
}
~~~
#### List Libraries
**GET**[https://cloud.seafile.com/api2/repos/](https://cloud.seafile.com/api2/repos/)
**Sample request**
~~~
curl -H 'Authorization: Token 24fd3c026886e3121b2ca630805ed425c272cb96' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/
~~~
**Sample response**
~~~
[
{
"permission": "rw",
"encrypted": false,
"mtime": 1400054900,
"owner": "user@mail.com",
"id": "f158d1dd-cc19-412c-b143-2ac83f352290",
"size": 0,
"name": "foo",
"type": "repo",
"virtual": false,
"desc": "new library",
"root": "0000000000000000000000000000000000000000"
},
{
"permission": "rw",
"encrypted": false,
"mtime": 1400054802,
"owner": "user@mail.com",
"id": "0536b11a-a5fd-4482-9314-728cb3472f54",
"size": 0,
"name": "foo",
"type": "repo",
"virtual": false,
"desc": "new library",
"root": "0000000000000000000000000000000000000000"
}
]
~~~
#### Get Library Info
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/](https://cloud.seafile.com/api2/repos/{repo-id}/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -G -H 'Authorization: Token 24fd3c026886e3121b2ca630805ed425c272cb96' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/632ab8a8-ecf9-4435-93bf-f495d5bfe975/
~~~
**Sample response**
~~~
{
"encrypted": false,
"password_need": null,
"mtime": null,
"owner": "self",
"id": "632ab8a8-ecf9-4435-93bf-f495d5bfe975",
"size": 1356155,
"name": "org",
"root": "b5227040de360dd22c5717f9563628fe5510cbce",
"desc": "org file",
"type": "repo"
}
~~~
#### Get Library Owner
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/owner/](https://cloud.seafile.com/api2/repos/{repo-id}/owner/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d9b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/owner/
~~~
**Sample response**
~~~
{
"owner": "user@example.com"
}
~~~
**Errors**
- 403 Permission error, only administrator can perform this action
#### Get Library History
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/history/](https://cloud.seafile.com/api2/repos/{repo-id}/history/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d9b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/history/
~~~
**Sample response**
~~~
{"commits": [{"rev_file_size": 0, "rev_file_id": null, "ctime": 1398045167, "creator_name": "imwhatiam123@gmail.com", "creator": "0000000000000000000000000000000000000000", "root_id": "ca2625da6be6e211ddd584615ef3bfaa531e66aa", "rev_renamed_old_path": null, "parent_id": "205c469f0830df09b13024601524058757a43128", "new_merge": false, "repo_id": "691b3e24-d05e-43cd-a9f2-6f32bd6b800e", "desc": "Modified \"api.md\"", "id": "eb62721812e0c3122889b5facde971b353ad176b", "conflict": false, "second_parent_id": null}, {"rev_file_size": 0, "rev_file_id": null, "ctime": 1398045158, "creator_name": "imwhatiam123@gmail.com", "creator": "0000000000000000000000000000000000000000", "root_id": "0b7a31adf4ea8b29ad5a5920420b548da11dd32f", "rev_renamed_old_path": null, "parent_id": "2ba85ee6072efea51a3483843ea7de9b6d1d1eb2", "new_merge": false, "repo_id": "691b3e24-d05e-43cd-a9f2-6f32bd6b800e", "desc": "Added \"api.md\"", "id": "205c469f0830df09b13024601524058757a43128", "conflict": false, "second_parent_id": null}], "page_next": false}
~~~
#### Create Library
**POST**[https://cloud.seafile.com/api2/repos/](https://cloud.seafile.com/api2/repos/)
**Request parameters**
- name
- desc (defaults to "new repo")
- passwd (needed by encrypt library)
**Sample request**
~~~
curl -v -d "name=foo&desc=new library" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/
~~~
**Sample response**
~~~
{
"encrypted": "",
"enc_version": 0,
"repo_id": "f15811fd-5c19-412c-b143-2ac83f352290",
"magic": "",
"relay_id": "c5e41170db250ea497075e2911104faf0105b7fb",
"repo_version": 1,
"relay_addr": "cloud.seafile.com",
"token": "c1f3defe9ba408cd7964427ec276843e9d10c23b",
"relay_port": "10001",
"random_key": "",
"email": "user@mail.com",
"repo_name": "foo"
}
~~~
**Success**
Response code 200 and newly created library information are returned.
**Errors**
- 400 Library name missing.
- 520 Operation failed.
#### Check/Create Sub Library
check if a dir has a corresponding sub_repo, if it does not have, create one
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/dir/sub_repo/?p=/\&name=sub_lib](https://cloud.seafile.com/api2/repos/{repo-id}/dir/sub_repo/?p=/\&name=sub_lib)
**Request parameters**
- repo-id
- p
- name
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d9b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/dir/sub_repo/?p=/\&name=sub_lib
~~~
**Sample response**
~~~
{"sub_repo_id": "c0a3283c-013c-4a7c-8f68-006f06fa6dec"}
~~~
**Errors**
- 400 Argument missing
- 500 INTERNAL SERVER ERROR
#### Delete Library
**DELETE**[https://cloud.seafile.com/api2/repos/{repo-id}/](https://cloud.seafile.com/api2/repos/{repo-id}/)
**Sample request**
~~~
curl -v -X DELETE -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/8f5f2222-72a8-454f-ac40-8397c5a556a8/
~~~
**Sample response**
"success"
**Errors**
-
400 Library does not exist.
-
403 Only library owner can perform this operation.
#### Decrypt Library
**POST**[https://cloud.seafile.com/api2/repos/{repo-id}/](https://cloud.seafile.com/api2/repos/{repo-id}/)
**Request parameters**
- password
**Sample request**
~~~
curl -v -d "password=123" -H 'Authorization: Token e6a33d61954f219a96b60f635cf02717964e4385' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/0c2465a5-4753-4660-8a22-65abec9ec8d0/
~~~
**Sample response**
"success"
**Errors**
- 400 Incorrect password
- 409 Repo is not encrypt
- 500 Internal server error
#### Create Public Library
**POST**[https://cloud.seafile.com/api2/repos/{repo-id}/public/](https://cloud.seafile.com/api2/repos/{repo-id}/public/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -X POST -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d9b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/public/
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
~~~
**Success**
~~~
Response code is 200(OK), and a string "success" is returned.
~~~
**Errors**
- 404 Repo not found
- 403 Forbid to access this repo
- 500 INTERNAL SERVER ERROR, Unable to make repo public
#### Remove Public Library
**DELETE**[https://cloud.seafile.com/api2/repos/{repo-id}/public/](https://cloud.seafile.com/api2/repos/{repo-id}/public/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -X DELETE -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d9b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/public/
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
~~~
**Success**
~~~
Response code is 200(OK), and a string "success" is returned.
~~~
**Errors**
- 404 Repo not found
- 403 Forbid to access this repo
- 500 INTERNAL SERVER ERROR, Unable to remove public repo
#### Fetch library download info
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/download-info/](https://cloud.seafile.com/api2/repos/{repo-id}/download-info/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d9b477fd' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/download-info/
~~~
**Sample response**
~~~
{
"applet_root": "https://localhost:13420",
"relay_addr": "localhost",
"token": "46acc4d9ca3d6a5c7102ef379f82ecc1edc629e1",
"repo_id": "dae8cecc-2359-4d33-aa42-01b7846c4b32",
"relay_port": "10002",
"encrypted": "",
"repo_name": "test",
"relay_id": "8e4b13b49ca79f35732d9f44a0804940d985627c",
"email": "user@example.com"
}
~~~
#### List Virtual Libraries
**GET**[https://cloud.seafile.com/api2/virtual-repos/](https://cloud.seafile.com/api2/virtual-repos/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/virtual-repos/"
~~~
**Sample response**
~~~
{"virtual-repos":
[
{"virtual_perm": "rw", "store_id": null, "worktree_invalid": false, "encrypted": false, "origin_repo_name": "lian", "last_modify": 0, "no_local_history": false, "head_branch": null, "last_sync_time": 0, "id": "51344de8-456f-4dc7-ac08-718827994252", "size": 0, "share_permission": null, "worktree_changed": false, "worktree_checktime": 0, "origin_path": "/lian", "is_virtual": true, "origin_repo_id": "a582d3bc-bcf5-421e-9125-741fa56d18d4", "version": 1, "random_key": null, "is_original_owner": true, "shared_email": null, "enc_version": 0, "head_cmmt_id": "bc666fdc60d2352b9f6a0324ac64168d43724eed", "desc": null, "index_corrupted": false, "magic": null, "name": "lian", "worktree": null, "auto_sync": false, "relay_id": null},
{"virtual_perm": "rw", "store_id": null, "worktree_invalid": false, "encrypted": false, "origin_repo_name": "lian", "last_modify": 0, "no_local_history": false, "head_branch": null, "last_sync_time": 0, "id": "c0a3283c-013c-4a7c-8f68-006f06fa6dec", "size": 0, "share_permission": null, "worktree_changed": false, "worktree_checktime": 0, "origin_path": "/", "is_virtual": true, "origin_repo_id": "a582d3bc-bcf5-421e-9125-741fa56d18d4", "version": 1, "random_key": null, "is_original_owner": true, "shared_email": null, "enc_version": 0, "head_cmmt_id": "ff18229aadc9acc73ad481278d5b4c42b3353aa0", "desc": null, "index_corrupted": false, "magic": null, "name": "123", "worktree": null, "auto_sync": false, "relay_id": null}
]
}
~~~
#### Search Libraries
**GET**[https://cloud.seafile.com/api2/search/](https://cloud.seafile.com/api2/search/)
**Request parameters**
- q
- per_page (optional)
**Sample request**
~~~
curl -G -H 'Authorization: Token 24fd3c026886e3121b2ca630805ed425c272cb96' -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/search/?q=keyword
~~~
**Sample response**
~~~
{
"has_more": false,
"total": 3,
"results": [
{
"repo_id": "691b3e24-d05e-43cd-a9f2-6f32bd6b800e",
"name": "api.md",
"oid": "8ea78453bb474359cd9d8e2c4c4d8d9cbdcef0a2",
"last_modified": 1398045167,
"fullpath": "/api.md",
"size": 18939
},
{
"repo_id": "c5509062-9bca-4933-a7e0-c6da1d5f82be",
"name": "home.md",
"oid": "dda57aaffa5179829e064c7d0c142f47a8a65d3b",
"last_modified": 1397096831,
"fullpath": "/home.md",
"size": 1954
},
{
"repo_id": "c5509062-9bca-4933-a7e0-c6da1d5f82be",
"name": "\u5e38\u89c1\u5b89\u88c5\u95ee\u9898.md",
"oid": "8573f982eeb478b932a55ec13218f4f90a7c5a27",
"last_modified": 1397188959,
"fullpath": "/\u5e38\u89c1\u5b89\u88c5\u95ee\u9898.md",
"size": 1050
}
]
}
~~~
**Errors**
- 404 Search not supported.
- 400 Missing argument q.
### File
#### Download File
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo](https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo)
**Request parameters**
- repo-id
- p
**Sample request**
~~~
curl -v -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/?p=/foo.c
~~~
**Sample response**
~~~
"https://cloud.seafile.com:8082/files/adee6094/foo.c"
~~~
**Errors**
- 400 Path is missing
- 404 File not found
- 520 Operation failed.
#### Get File Detail
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/file/detail/?p=/foo.c](https://cloud.seafile.com/api2/repos/{repo-id}/file/detail/?p=/foo.c)
- repo-id
- p
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd3606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/detail/?p=/foo.c
~~~
**Sample response**
~~~
{
"id": "013d3d38fed38b3e8e26b21bb3463eab6831194f",
"mtime": 1398148877,
"type": "file",
"name": "foo.py",
"size": 22
}
~~~
**Errors**
- 400 Path is missing
- 520 Operation failed.
#### Get File History
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/file/history/?p=/foo.c](https://cloud.seafile.com/api2/repos/{repo-id}/file/history/?p=/foo.c)
**Request parameters**
- repo-id
- p
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd3606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/history/?p=/foo.c
~~~
**Sample response**
~~~
{
"commits":
[
{
"rev_file_size": 0,
"repo_id": "a582d3bc-bcf5-421e-9125-741fa56d18d4",
"ctime": 1398149763,
"creator_name": "user@example.com",
"creator": "0000000000000000000000000000000000000000",
"root_id": "b64d413d9894c9206beac3faf9c2a0d75b4a8ebf",
"rev_renamed_old_path": null,
"parent_id": "8e546762e1657ab22dad83e9cb1e5ea31a767c9a",
"new_merge": false,
"version": 1,
"conflict": false,
"desc": "Added \"foo.c\"",
"id": "9464f7499bfa7363d563282361339eaf96a93318",
"rev_file_id": "0000000000000000000000000000000000000000",
"second_parent_id": null
},
{
"rev_file_size": 0,
"repo_id": "a582d3bc-bcf5-421e-9125-741fa56d18d4",
"ctime": 1398146059,
"creator_name": "user@example.com",
"creator": "0000000000000000000000000000000000000000",
"root_id": "572413414257c76039897e00aeb35f819471206b",
"rev_renamed_old_path": null,
"parent_id": "f977bdb0ebb205645c3b42216c2817e511c3f68f",
"new_merge": false,
"version": 1,
"conflict": false,
"desc": "Added \"foo.c\"",
"id": "a1ec20709675f4dc8db825cdbca296be245d189b",
"rev_file_id": "0000000000000000000000000000000000000000",
"second_parent_id": null
}
]
}
~~~
**Errors**
- 400 Path is missing
- 404 File not found
#### Download File From a Revision
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/file/revision/?p=/foo.c&commit_id=a1ec20709675f4dc8db825cdbca296be245d189b](https://cloud.seafile.com/api2/repos/{repo-id}/file/revision/?p=/foo.c&commit_id=a1ec20709675f4dc8db825cdbca296be245d189b)
**Request parameters**
- repo-id
- p
- commit_id
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd3606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/revision/?p=/foo.c\&commit_id=a1ec20709675f4dc8db825cdbca296be245d189b
~~~
**Sample response**
~~~
"https://cloud.seafile.com:8082/files/adee6094/foo.c"
~~~
**Errors**
- 400 Path is missing
- 404 Revision not found
#### Create File
**POST**[https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo.c](https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo.c)
**Request parameters**
- repo-id
- p
- operation
**Sample request**
~~~
curl -v -d "operation=create" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/?p=/foo.c
~~~
**Sample response**
~~~
...
< HTTP/1.1 201 CREATED
...
"success"
~~~
**Success**
Response code is 201, and a string `"success"` is returned.
**Errors**
- 403 FORBIDDEN, You do not have permission to move file
- 520 OPERATION FAILED, fail to create file
#### Rename File
**POST**[https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo.c](https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo.c)
**Request parameters**
- repo-id
- p
- operation
- newname
**Sample request**
~~~
curl -v -d "operation=rename&newname=newfoo.c" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/?p=/foo.c
~~~
**Sample response**
~~~
...
< HTTP/1.1 301 MOVED PERMANENTLY
...
"success"
~~~
**Success**
Response code is 301, and a string `"success"` is returned.
**Errors**
- 400 BAD REQUEST, Path is missing or invalid(e.g. p=/) or newname is missing(newname too long)
- 403 FORBIDDEN, You do not have permission to rename file
- 404 NOT FOUND, repo not found
- 409 CONFLICT, the newname is the same to the old
- 520 OPERATION FAILED, fail to rename file
#### Lock File
**PUT**[https://cloud.seafile.com/api2/repos/{repo-id}/file/](https://cloud.seafile.com/api2/repos/{repo-id}/file/)
**Request parameters**
- repo-id
- p
- operation
**Sample request**
~~~
curl -v -X PUT -d "operation=lock&p=/foo.c" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
"success"
~~~
**Success**
Response code is 200, and a string `"success"` is returned.
**Errors**
- 400 BAD REQUEST, Path is missing or invalid(e.g. p=/)
- 403 FORBIDDEN, You do not have permission to lock file
- 404 NOT FOUND, repo not found
- 520 OPERATION FAILED, fail to lock file
#### Unlock File
**PUT**[https://cloud.seafile.com/api2/repos/{repo-id}/file/](https://cloud.seafile.com/api2/repos/{repo-id}/file/)
**Request parameters**
- repo-id
- p
- operation
**Sample request**
~~~
curl -v -X PUT -d "operation=unlock&p=/foo.c" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
"success"
~~~
**Success**
Response code is 200, and a string `"success"` is returned.
**Errors**
- 400 BAD REQUEST, Path is missing or invalid(e.g. p=/)
- 403 FORBIDDEN, You do not have permission to lock file
- 404 NOT FOUND, repo not found
- 520 OPERATION FAILED, fail to unlock file
#### Move File
**POST**[https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo.c](https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo.c)
**Request parameters**
- repo-id
- p
- operation
- dst_repo
- dst_dir
**Sample request**
~~~
curl -v -d "operation=move&dst_repo=affc837f-7fdd-4e91-b88a-32caf99897f2&dst_dir=/" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/?p=/foo.c
~~~
**Sample response**
~~~
...
< HTTP/1.1 301 MOVED PERMANENTLY
...
"success"
~~~
**Success**
Response code is 301, and a string `"success"` is returned.
**Errors**
- 400 BAD REQUEST, Path is missing or invalid(e.g. p=/)
- 403 FORBIDDEN, You do not have permission to move file
- 404 NOT FOUND, repo not found
- 500 INTERNAL SERVER ERROR
#### Copy File
**POST**[https://cloud.seafile.com/api2/repos/{repo_id}/fileops/copy/](https://cloud.seafile.com/api2/repos/{repo_id}/fileops/copy/)
**Request parameters**
- p: source folder path, defaults to `"/"`
- file_names: list of file/folder names to copy. Multiple file/folder names can be seperated by `:`.
- dst_repo: the destination repo id
- dst_dir: the destination folder in `dst_repo`
**Sample request**
~~~
curl -d "dst_repo=73ddb2b8-dda8-471b-b7a7-ca742b07483c&dst_dir=/&file_names=foo.c" -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/repos/c7436518-5f46-4296-97db-2fcba4c8c8db/fileops/copy/
~~~
**Sample response**
~~~
"success"
~~~
**Errors**
- 400 missing argument
- 403 You do not have permission to copy file
- 404 repo not found
- 502 failed to copy file
#### Revert File
**PUT**[https://cloud.seafile.com/api2/repos/{repo_id}/file/revert/](https://cloud.seafile.com/api2/repos/{repo_id}/file/revert/)
**Request parameters**
- repo_id
- p
- commit_id
**Sample request**
~~~
curl -v -X PUT -d "commit_id=a1ec20709675f4dc8db825cdbca296be245d189b&p=/foo.c" -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/8f5f2222-72a8-454f-ac40-8397c5a556a8/file/revert/
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
{"ret": 0}
~~~
**Success**
~~~
Response code 200(OK) is returned.
~~~
**Errors**
- 400 Path is missing
#### Delete File
**DELETE**[https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo](https://cloud.seafile.com/api2/repos/{repo-id}/file/?p=/foo)
**Request parameters**
- repo-id
- p
**Sample request**
~~~
curl -X DELETE -v -H 'Authorization: Token f2210dacd3606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/file/?p=/foo.c
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
"success"
~~~
**Errors**
- 400 Path is missing
- 520 Operation failed.
**Note**
This can also be used to delete directory.
#### Upload File
##### Get Upload Link
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/upload-link/](https://cloud.seafile.com/api2/repos/{repo-id}/upload-link/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" https://cloud.seafile.com/api2/repos/99b758e6-91ab-4265-b705-925367374cf0/upload-link/
~~~
**Sample response**
~~~
"http://cloud.seafile.com:8082/upload-api/ef881b22"
~~~
**Errors**
~~~
500 Run out of quota
~~~
##### Upload File
After getting the upload link, POST to this link for uploading files.
**POST**[http://cloud.seafile.com:8082/upload-api/ef881b22](http://cloud.seafile.com:8082/upload-api/ef881b22)
**Errors**
~~~
400 Bad request
440 Invalid filename
441 File already exists
500 Internal server error
~~~
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" -F file=@test.txt -F filename=test.txt -F parent_dir=/ http://cloud.seafile.com:8082/upload-api/ef881b22
~~~
**Sample response**
~~~
"adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"
~~~
**Note**
For python client uploading, see [https://cloud.seafile.com/f/1b0ade6edc/](https://cloud.seafile.com/f/1b0ade6edc/)
#### Update file
##### Get Update Link
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/update-link/](https://cloud.seafile.com/api2/repos/{repo-id}/update-link/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" https://cloud.seafile.com/api2/repos/99b758e6-91ab-4265-b705-925367374cf0/update-link/
~~~
**Sample response**
~~~
"http://cloud.seafile.com:8082/update-api/ef881b22"
~~~
**Errors**
~~~
500 Run out of quota
~~~
##### Update File
After getting the upload link, POST to this link for uploading files.
**POST**[http://cloud.seafile.com:8082/update-api/ef881b22](http://cloud.seafile.com:8082/update-api/ef881b22)
**Request parameters**
- target_file
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" -F file=@test.txt -F filename=test.txt -F target_file=/test.txt http://cloud.seafile.com:8082/upload-api/ef881b22
~~~
**Returns**
The id of the updated file
**Sample response**
~~~
"adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"
~~~
**Errors**
- 400 Bad request
- 440 Invalid filename
- 500 Internal server error
#### Get Upload Blocks Link
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/upload-blks-link/](https://cloud.seafile.com/api2/repos/{repo-id}/upload-blks-link/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" https://cloud.seafile.com/api2/repos/99b758e6-91ab-4265-b705-925367374cf0/upload-blks-link/
~~~
**Sample response**
~~~
"https://cloud.seafile.com/seafhttp/upload-blks-api/c1e6823d"
~~~
**Errors**
- 403 Can not access repo
- 520 above quota
#### Get Update Blocks Link
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/update-blks-link/](https://cloud.seafile.com/api2/repos/{repo-id}/update-blks-link/)
**Request parameters**
- repo-id
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd" https://cloud.seafile.com/api2/repos/99b758e6-91ab-4265-b705-925367374cf0/update-blks-link/
~~~
**Sample response**
~~~
"https://cloud.seafile.com/seafhttp/update-blks-api/c1e6823d"
~~~
**Errors**
- 403 Can not access repo
- 520 above quota
### [Directory]()
#### List Directory Entries
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/dir/](https://cloud.seafile.com/api2/repos/{repo-id}/dir/)
- repo-id
- p (optional): The path to a directory. If `p` is missing, then defaults to '/' which is the top directory.
- oid (optional)
**Sample request**
~~~
curl -H "Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d9b477fd" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/repos/99b758e6-91ab-4265-b705-925367374cf0/dir/?p=/foo
~~~
**Sample response**
If oid is the latest oid of the directory, returns `"uptodate"` , else returns
~~~
[
{
"id": "0000000000000000000000000000000000000000",
"type": "file",
"name": "test1.c",
"size": 0
},
{
"id": "e4fe14c8cda2206bb9606907cf4fca6b30221cf9",
"type": "dir",
"name": "test_dir"
}
]
~~~
**Errors**
- 404 The path is not exist.
- 440 Repo is encrypted, and password is not provided.
- 520 Operation failed..
#### Create New Directory
**POST**[https://cloud.seafile.com/api2/repos/{repo-id}/dir/](https://cloud.seafile.com/api2/repos/{repo-id}/dir/)
- repo-id
- p
- operation=mkdir (post)
**Sample request**
~~~
curl -d "operation=mkdir" -v -H 'Authorization: Tokacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/dir/?p=/foo
~~~
**Sample response**
~~~
...
< HTTP/1.0 201 CREATED
< Location: https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/dir/?p=/foo
...
"success"
~~~
**Success**
Response code 201(Created) is returned, and Location header provides the url of created directory.
**Errors**
- 400 Path is missing or invalid(e.g. p=/)
- 520 Operation failed.
**Notes**
Newly created directory will be renamed if the name is duplicated.
#### Rename Directory
**POST**[https://cloud.seafile.com/api2/repos/{repo-id}/dir/](https://cloud.seafile.com/api2/repos/{repo-id}/dir/)
**Parameters**
- p (path)
- operation=rename (post)
- newname (the new name for directory)
**Sample request**
~~~
curl -d "operation=rename&newname=pinkfloyd_newfolder" -v -H 'Authorization: Tokacd9c6ccb8133606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/dir/?p=/foo
~~~
**Success**
Response code 200 if everything is ok
**Errors**
- 403 if You do not have permission to rename a folder
- 400 if newname is not given
- 520 if Failed to rename directory (generic problem)
**Notes**
If the new name is the same of the old name no operation will be done.
#### Delete Directory
**DELETE**[https://cloud.seafile.com/api2/repos/{repo-id}/dir/](https://cloud.seafile.com/api2/repos/{repo-id}/dir/)
- repo-id
- p
**Sample request**
~~~
curl -X DELETE -v -H 'Authorization: Token f2210dacd3606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/dir/?p=/foo
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
"success"
~~~
**Success**
Response code is 200(OK), and a string `"success"` is returned.
**Errors**
- 400 Path is missing or invalid(e.g. p=/)
- 520 Operation failed.
**Note**
This can also be used to delete file.
#### Download Directory
**GET**[https://cloud.seafile.com/api2/repos/{repo-id}/dir/download/?p=/foo](https://cloud.seafile.com/api2/repos/{repo-id}/dir/download/?p=/foo)
- repo-id
- p
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd3606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/dir/?p=/foo
~~~
**Sample response**
~~~
"https://cloud.seafile.com:8082/files/adee6094/foo"
~~~
**Errors**
- 400 Path is missing or invalid(e.g. p=/), or unable to download directory, size is too large
- 404 Repo(path) not found(exist)
- 520 Operation failed.
#### Share Directory
**POST**[https://cloud.seafile.com/api2/repos/{repo-id}/dir/share/](https://cloud.seafile.com/api2/repos/{repo-id}/dir/share/)
- repo-id
- emails
- s_type
- path
- perm
**Sample request**
~~~
curl -v -X POST -d "emails=user@example.com&s_type=d&path=/dir&perm=r" -H 'Authorization: Token f2210dacd3606d94ff8e61d99b477fd' -H 'Accept: application/json; charset=utf-8; indent=4' https://cloud.seafile.com/api2/repos/dae8cecc-2359-4d33-aa42-01b7846c4b32/dir/share/
~~~
**Sample response**
~~~
...
< HTTP/1.0 200 OK
...
~~~
**Success**
Response code is 200(OK).
#### Batch Delete
Pipelining over HTTP/1.1 can be used to delete multiple files and directories without losing performance.
A sample request looks like `curl -X DELETE https://cloud.seafile.com/api2/repos/{repo-id}/dir/?p=/foo http://cloud.seafile.com/api2/repos/{repo-id}/dir/?p=/bar`. This code snippet shows how to use Python client to batch delete multiple files and directories. See [http://cloud.seafile.com/f/f7fd5d5b9d/](http://cloud.seafile.com/f/f7fd5d5b9d/)
### Get Avatar
### Get User Avatar
**GET**[https://cloud.seafile.com/api2/avatars/user/{user}/resized/{size}/](https://cloud.seafile.com/api2/avatars/user/{user}/resized/{size}/)
**Request parameters**
- user
- size
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/avatars/user/user@example.com/resized/80/
~~~
**Sample response**
~~~
{
"url": "http://127.0.0.1:8000/media/avatars/default.png",
"is_default": true,
"mtime": 0
}
~~~
### Get Group Avatar
**GET**[https://cloud.seafile.com/api2/avatars/group/{group_id}/resized/{size}/](https://cloud.seafile.com/api2/avatars/group/{group_id}/resized/{size}/)
**Request parameters**
- group_id
- size
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/avatars/group/1/resized/80/
~~~
**Sample response**
~~~
{
"url": "http://127.0.0.1:8000/media/avatars/groups/default.png",
"is_default": true,
"mtime": 0
}
~~~
### Get Thumbnail
### Get Thumbnail Image
**GET**[https://cloud.seafile.com/api2/repos/{repo_id}/thumbnail/](https://cloud.seafile.com/api2/repos/{repo_id}/thumbnail/)
**Request parameters**
- repo_id
- p
- size
**Sample request**
~~~
curl -H 'Authorization: Token 40f9a510a0629430865dc199a3880898ad2e48fc' https://cloud.seafile.com/api2/repos/fbead5d0-4817-4446-92f3-7ac8e6a8e5f5/thumbnail/?p=/5.jpg\&size=123 > thumbnail.png
~~~
### List Group And Contacts
**GET**[https://cloud.seafile.com/api2/groupandcontacts/](https://cloud.seafile.com/api2/groupandcontacts/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/groupandcontacts/"
~~~
**Sample response**
~~~
{
"contacts": [
{
"msgnum": 0,
"mtime": 0,
"lastmsg": null,
"email": "user@example.com",
"name": "123"
}
],
"umsgnum": 0,
"replynum": 0,
"groups": [
{
"ctime": 1398134171327948,
"creator": "user@example.com",
"msgnum": 0,
"mtime": 0,
"lastmsg": null,
"id": 1,
"name": "lian"
}
],
"gmsgnum": 0,
"newreplies": []
}
~~~
### Get File Activities
**GET**[https://cloud.seafile.com/api2/events/](https://cloud.seafile.com/api2/events/)
**Sample request**
~~~
curl -H 'Authorization: Token f2210dacd9c6ccb8133606d94ff8e61d99b477fd' "https://cloud.seafile.com/api2/events/"
~~~
**Sample response**
~~~
{"more_offset": 16, "events":[{"repo_id": "6f3d28a4-73ae-4d01-a727-26774379dcb9", "author": "mysnowls@163.com", "nick": "lins05", "time": 1398078909, "etype": "repo-update", "repo_name": "Downloads", "desc": "Added \"seafile-cli_3.0.2_i386.tar.gz\"."},{"repo_id": "6f3d28a4-73ae-4d01-a727-26774379dcb9", "author": "mysnowls@163.com", "nick": "lins05", "time": 1398075540, "etype": "repo-update", "repo_name": "Downloads", "desc": "Added \"seafile-server_3.0.0_x86-64.tar.gz\"."}], "more": false}
~~~
### Add Organization
**POST**[https://cloud.seafile.com/api2/organization/](https://cloud.seafile.com/api2/organization/)
**Request parameters**
- username
- password
- org_name
- prefix
- quota
- member_limit
**Sample request**
~~~
curl -v -X POST -d "username=example@example.com&password=example&org_name=example&prefix=example"a=100&member_limit=10" -H "Authorization: Token ccdff90e4d1efe76b2b3d91c06b027a5cff189d4" -H 'Accept: application/json; indent=4' https://cloud.seafile.com/api2/organization/
~~~
**Sample response**
~~~
"success"
~~~
- 介紹
- 概览
- Seafile 组件
- 研发路线图
- 常见问题解答
- 修改日志
- 我要参与
- Linux 下部署 Seafile 服务器
- 部署 Seafile 服务器(使用 SQLite)
- 部署 Seafile 服务器(使用 MySQL)
- Nginx 下配置 Seahub
- Nginx 下启用 Https
- Apache 下配置 Seahub
- Apache 下启用 Https
- Seafile LDAP 配置
- 开机启动 Seafile
- 防火墙设置
- Logrotate 管理系统日志
- 使用 Memcached
- 使用 NAT
- 非根域名下部署 Seahub
- 从 SQLite 迁移至 MySQL
- 安装常见问题
- 升级
- Windows 下部署 Seafile 服务器
- 下载安装 Windows 版 Seafile 服务器
- 安装 Seafile 为 Windows 服务
- 所用端口说明
- 升级
- 从 Windows 迁移到 Linux
- 垃圾回收
- 部署 Seafile 专业版服务器
- 下载安装 Seafile 专业版服务器
- 从社区版迁移至专业版
- 升级
- Amazon S3 下安装
- OpenStackSwift 下安装
- Ceph 下安装
- 配置选项
- 文件搜索说明
- 集群部署
- 集群中启用搜索和后台服务
- NFS 下集群安装
- 常见问题解答
- 软件许可协议
- 服务器个性化配置
- ccnet.conf
- seafile.conf
- seahub_settings.py
- 发送邮件提醒
- 个性化邮件提醒
- 用户管理
- 存储容量与文件上传/下载大小限制
- 自定义 Web
- 管理员手册
- 账户管理
- 日志
- 备份与恢复
- Seafile FSCK
- Seafile GC
- WebDAV 和 FUSE 扩展
- WebDAV 扩展
- FUSE 扩展
- 安全选项
- 安全特性
- 日志和审计
- 开发文档
- 编译 Seafile
- Linux
- Windows
- Max OS X
- Server
- 开发环境
- 编程规范
- Web API
- Python API
- 数据模型
- 服务器组件
- 同步算法