aboutsummaryrefslogtreecommitdiff
path: root/api.md
blob: 1dcdb4142b85c2a338f5df2e2d779a7ad9c525b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Jellything API

Most endpoints require the `Accept` header to be present and set to
`application/json`. Any endpoint returning JSON, will report errors with an
object containing error string in the `error` key. Routes marked with `*`
require authentification.

The `jellyclient` crate already implements most API functionality. The
`jellycommon` crate provides useful structs for deserializing data (also
reexported in jellyclient).

```toml
# Cargo.toml
[depedencies]
jellyclient = { git = "https://codeberg.org/metamuffin/jellything.git" }
```

## GET `/api/version`

Returns API version number.

## POST `/api/create_session`

Request body contains JSON with keys `username`, `password` and `expire` (in
seconds). The Response contains the session cookie as a string in JSON.

## GET* `/n/<id>`

Request a library node (either a directory or item). Returns it as `NodePublic`.

## GET* `/n/<id>/asset?<role>&<width>`

Where `role` is one of `backdrop` or `poster` and `width` is the width of the
resolution you want to image to be in. The actual returned resolution must not
be exactly what you requested. Returns assets for a node.

## GET* `/stream/<id>?<format>&<abr>&<vbr>&<index>&<tracks>`

Responds with the stream directly or a redirect to the actual source in case of
federation.