aboutsummaryrefslogtreecommitdiff
path: root/doc/api.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/api.md')
-rw-r--r--doc/api.md46
1 files changed, 37 insertions, 9 deletions
diff --git a/doc/api.md b/doc/api.md
index 0b89be5..8eedca0 100644
--- a/doc/api.md
+++ b/doc/api.md
@@ -1,9 +1,28 @@
-# Jellything API
+# Jellything Rust API
+
+For making your own applications that implement client functionality, use the
+`jellyclient` crate. The `jellycommon` crate exposes commonly used structs like
+those used in the library and for jhls.
+
+## Generated Documentation
+
+- [jellything](/doc/jellything/)
+- [jellycommon](/doc/jellycommon/)
+- [jellyremuxer](/doc/jellyremuxer/)
+- [jellytranscode](/doc/jellytranscode/)
+- [jellyimport](/doc/jellyimport/)
+- [jellymatroska](/doc/jellymatroska/)
+ - [ebml_derive](/doc/ebml_derive/)
+- [jellybase](/doc/jellybase/)
+- [jellystream](/doc/jellystream/)
+- [jellytool](/doc/jellytool/)
+
+# Jellything HTTP API
Most endpoints require the `Accept` header to be present and set to
-`application/json` and `image/avif` respectively. Any endpoint returning JSON, will report errors with an
-object containing error string in the `error` key. Routes marked with `*`
-require authentification.
+`application/json` and `image/avif` respectively. 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
@@ -18,38 +37,47 @@ jellyclient = { git = "https://codeberg.org/metamuffin/jellything.git" }
## General
### GET `/api/version`
+
Returns API version number.
### POST `/api/create_session`
+
Request body contains JSON with keys `username`, `password`, `expire` (in
seconds) and `drop_permissions` (a list of permissions, that this session cannot
use). 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>/extended`
+
Request extended informationf for library node. Returns it as `ExtendedNode`.
## Assets
All asset endpoints redirect to the asset that you need. Returned images are
-coded with AVIF. The `width` parameter is the width of the resolution you want to image to be.
+coded with AVIF. The `width` parameter is the width of the resolution you want
+to image to be.
-> [!WARNING]
-> The actual returned resolution must not be exactly what you requested.
+> [!WARNING] The actual returned resolution must not be exactly what you
+> requested.
### GET* `/n/<id>/asset?<role>&<width>`
-Where `role` is one of `backdrop` or `poster` and
+
+Where `role` is one of `backdrop` or `poster` and
### GET* `/n/<id>/thumbnail?<t>&<width>`
-Returns a single frame from some track video of the media at a given time `t`.
+
+Returns a single frame from some track video of the media at a given time `t`.
### GET* `/n/<id>/person/<index>/asset?<group>&<width>`
+
Returns headshot of a person from that node.
## Stream
### GET* `/stream/<id>?<format>&<index>&<profile>&<index>&<tracks>&<webm>`
+
Responds with the stream directly or a redirect to the actual source in case of
federation.