docs/mkdocs/docs/api/additional.md

143 lines
2.5 KiB
Markdown

# Additional API endpoints
## Login
Return token and user ID for username and password:
**POST** `/api/login/`
```json
{
"username": "tubearchivist",
"password": "verysecret"
}
```
after successful login returns
```json
{
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"user_id": 1
}
```
## Refresh
**GET** `/api/refresh/`
Parameters:
- **type**: one of *video*, *channel*, *playlist*, optional
- **id**: item id, optional
without specifying type: return total for all queued items:
```json
{
"total_queued": 2,
"type": "all",
"state": "running"
}
```
specify type: return total items queue of this type:
```json
{
"total_queued": 2,
"type": "video",
"state": "running"
}
```
specify type *and* id to get state of item in queue:
```json
{
"total_queued": 2,
"type": "video",
"state": "in_queue",
"id": "video-id"
}
```
**POST** `/api/refresh/`
Parameter:
- extract_videos: to refresh all videos for channels/playlists, default False
Manually start a refresh task: post list of *video*, *channel*, *playlist* IDs:
```json
{
"video": ["video1", "video2", "video3"],
"channel": ["channel1", "channel2", "channel3"],
"playlist": ["playlist1", "playlist2"]
}
```
## Cookie
Check your youtube cookie settings, *status* turns to `true` if cookie has been validated.
**GET** `/api/cookie/`
```json
{
"cookie_enabled": true,
"status": true,
"validated": 1680953715,
"validated_str": "timestamp"
}
```
**POST** `/api/cookie/`
Send empty post request to validate cookie.
```json
{
"cookie_validated": true
}
```
**PUT** `/api/cookie/`
Send put request containing the cookie as a string:
```json
{
"cookie": "your-cookie-as-string"
}
```
Imports and validates cookie, returns on success:
```json
{
"cookie_import": "done",
"cookie_validated": true
}
```
Or returns status code 400 on failure:
```json
{
"cookie_import": "fail",
"cookie_validated": false
}
```
## Search
**GET** `/api/search/?query=<query>`
Returns search results from your query.
## Watched
**POST** `/api/watched/`
Change watched state, where the `id` can be a single video, or channel/playlist to change all videos belonging to that channel/playlist.
```json
{
"id": "xxxxxxx",
"is_watched": true
}
```
## Ping
Validate your connection and authentication with the API
**GET** `/api/ping/`
When valid returns message with user id and TubeArchivist version:
```json
{
"response": "pong",
"user": 1,
"version": "v0.4.7"
}
```