shiori/docs/api.md

288 lines
5.5 KiB
Markdown

This is a brief explanation of Shiori's API. For more examples you can import this [collection](https://github.com/go-shiori/shiori/blob/master/docs/postman/shiori.postman_collection.json) in Postman.
#### Table of contents
* [Auth](#Auth)
* [Log in](#Log-in)
* [Log out](#Log-out)
* [Bookmarks](#Bookmarks)
* [Get Bookmarks](#Get-Bookmarks)
* [Add Bookmark](#Add-bookmark)
* [Edit Bookmark](#Edit-bookmark)
* [Delete Bookmark](#Delete-bookmark)
* [Tags](#Tags)
* [Get Tags](#Get-tags)
* [Rename Tag](#Rename-tag)
* [Accounts](#Accounts)
* [List Accounts](#List-accounts)
* [Create account](#Create-account)
* [Edit Account](#Edit-account)
* [Delete Accounts](#Delete-accounts)
# Auth
## Log in
Most actions require a session id. For that, you'll need to log in using your username and password.
|Request info|Value|
|-|-|
|Endpoint|`/api/login`|
|Method|`POST`|
Body:
```json
{
"username": "shiori",
"password": "gopher",
"remember": 1,
"owner": true
}
```
It will return your session ID in a JSON:
```json
{
"session": "YOUR_SESSION_ID",
"account": {
"id": 1,
"username": "shiori",
"owner": true
}
}
```
## Log out
Log out of a session ID.
|Request info|Value|
|-|-|
|Endpoint|`/api/logout`|
|Method|`POST`|
|`X-Session-Id` Header|`sessionId`|
# Bookmarks
## Get bookmarks
Gets the last 30 bookmarks (last page).
|Request info|Value|
|-|-|
|Endpoint|`/api/bookmarks`|
|Method|`GET`|
|`X-Session-Id` Header|`sessionId`|
Returns:
```json
{
"bookmarks": [
{
"id": 825,
"url": "https://interesting_cool_article.com",
"title": "Cool Interesting Article",
"excerpt": "An interesting and cool article indeed!",
"author": "",
"public": 0,
"modified": "2020-12-06 00:00:00",
"imageURL": "",
"hasContent": true,
"hasArchive": true,
"tags": [
{
"id": 7,
"name": "TAG"
}
],
"createArchive": false
},
],
"maxPage": 19,
"page": 1
}
```
## Add bookmark
Add a bookmark. For some reason, Shiori ignores the provided title and excerpt, and instead fetches them automatically. Note the tag format, a regular JSON list will result in an error.
|Request info|Value|
|-|-|
|Endpoint|`/api/bookmarks`|
|Method|`POST`|
|`X-Session-Id` Header|`sessionId`|
Body:
```json
{
"url": "https://interesting_cool_article.com",
"createArchive": true,
"public": 1,
"tags": [{"name": "Interesting"}, {"name": "Cool"}],
"title": "Cool Interesting Article",
"excerpt": "An interesting and cool article indeed!"
}
```
Returns:
```json
{
"id": 827,
"url": "https://interesting_cool_article.com",
"title": "TITLE",
"excerpt": "EXCERPT",
"author": "AUTHOR",
"public": 1,
"modified": "DATE",
"html": "HTML",
"imageURL": "/bookmark/827/thumb",
"hasContent": false,
"hasArchive": true,
"tags": [
{
"name": "Interesting"
},
{
"name": "Cool"
}
],
"createArchive": true
}
```
## Edit bookmark
Modifies a bookmark, by ID.
|Request info|Value|
|-|-|
|Endpoint|`/api/bookmarks`|
|Method|`PUT`|
|`X-Session-Id` Header|`sessionId`|
Body:
```json
{
"id": 3,
"url": "https://interesting_cool_article.com",
"title": "Cool Interesting Article",
"excerpt": "An interesting and cool article indeed!",
"author": "AUTHOR",
"public": 1,
"modified": "2019-09-22 00:00:00",
"imageURL": "/bookmark/3/thumb",
"hasContent": false,
"hasArchive": false,
"tags": [],
"createArchive": false
}
```
After providing the ID, provide the modified fields. The syntax is the same as [adding](#Add-a-bookmark).
## Delete bookmark
Deletes a list of bookmarks, by their IDs.
|Request info|Value|
|-|-|
|Endpoint|`/api/bookmarks`|
|Method|`DEL`|
|`X-Session-Id` Header|`sessionId`|
Body:
```json
[1, 2, 3]
```
# Tags
## Get tags
Gets the list of tags, their IDs and the number of entries that have those tags.
|Request info|Value|
|-|-|
|Endpoint|`/api/tags`|
|Method|`GET`|
|`X-Session-Id` Header|`sessionId`|
Returns:
```json
[
{
"id": 1,
"name": "Cool",
"nBookmarks": 1
},
{
"id": 2,
"name": "Interesting",
"nBookmarks": 1
}
```
## Rename tag
Renames a tag, provided its ID.
|Request info|Value|
|-|-|
|Endpoint|`/api/tag`|
|Method|`PUT`|
|`X-Session-Id` Header|`sessionId`|
Body:
```json
{
"id": 1,
"name": "TAG_NEW_NAME"
}
```
# Accounts
## List accounts
Gets the list of all user accounts, their IDs, and whether or not they are owners.
|Request info|Value|
|-|-|
|Endpoint|`/api/accounts`|
|Method|`GET`|
|`X-Session-Id` Header|`sessionId`|
Returns:
```json
[
{
"id": 1,
"username": "shiori",
"owner": true
}
]
```
## Create account
Creates a new user.
|Request info|Value|
|-|-|
|Endpoint|`/api/accounts`|
|Method|`POST`|
|`X-Session-Id` Header|`sessionId`|
Body:
```json
{
"username": "shiori2",
"password": "gopher",
"owner": false
}
```
## Edit account
Changes an account's password or owner status.
|Request info|Value|
|-|-|
|Endpoint|`/api/accounts`|
|Method|`PUT`|
|`X-Session-Id` Header|`sessionId`|
Body:
```json
{
"username": "shiori",
"oldPassword": "gopher",
"newPassword": "gopher",
"owner": true
}
```
## Delete accounts
Deletes a list of users.
|Request info|Value|
|-|-|
|Endpoint|`/api/accounts`|
|Method|`DEL`|
|`X-Session-Id` Header|`sessionId`|
Body:
```json
["shiori", "shiori2"]
```