From 13856a1fb33b1f2f07dddb32ac07db2bb0e82da3 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 7 Sep 2025 17:51:12 +0000 Subject: release(docs): release the 0.27 docs --- docs/versioned_docs/version-v0.27.0/01-intro.md | 53 ++++ .../version-v0.27.0/02-installation/01-docker.md | 101 ++++++++ .../version-v0.27.0/02-installation/02-unraid.md | 19 ++ .../02-installation/03-archlinux.md | 95 +++++++ .../02-installation/04-kubernetes.md | 112 +++++++++ .../version-v0.27.0/02-installation/05-pikapods.md | 32 +++ .../version-v0.27.0/02-installation/06-debuntu.md | 74 ++++++ .../02-installation/07-minimal-install.md | 49 ++++ .../version-v0.27.0/02-installation/08-truenas.md | 3 + .../02-installation/_category_.json | 3 + .../version-v0.27.0/03-configuration.md | 229 +++++++++++++++++ .../version-v0.27.0/04-screenshots.md | 34 +++ .../version-v0.27.0/05-quick-sharing.md | 21 ++ docs/versioned_docs/version-v0.27.0/06-openai.md | 11 + .../version-v0.27.0/07-development/01-setup.md | 178 +++++++++++++ .../07-development/02-directories.md | 28 +++ .../version-v0.27.0/07-development/03-database.md | 10 + .../07-development/04-architecture.md | 9 + .../version-v0.27.0/07-development/_category_.json | 3 + .../version-v0.27.0/08-security-considerations.md | 14 ++ .../version-v0.27.0/09-command-line.md | 114 +++++++++ docs/versioned_docs/version-v0.27.0/09-mcp.md | 65 +++++ docs/versioned_docs/version-v0.27.0/10-import.md | 49 ++++ docs/versioned_docs/version-v0.27.0/11-FAQ.md | 60 +++++ .../version-v0.27.0/12-troubleshooting.md | 46 ++++ .../version-v0.27.0/13-community-projects.md | 72 ++++++ .../14-guides/01-legacy-container-upgrade.md | 66 +++++ .../14-guides/02-search-query-language.md | 71 ++++++ .../version-v0.27.0/14-guides/03-singlefile.md | 46 ++++ .../14-guides/04-hoarder-to-karakeep-migration.md | 28 +++ .../14-guides/05-different-ai-providers.md | 66 +++++ .../version-v0.27.0/14-guides/_category_.json | 3 + .../version-v0.27.0/api/_category_.json | 1 + .../api/add-a-bookmark-to-a-list.api.mdx | 71 ++++++ .../version-v0.27.0/api/attach-asset.api.mdx | 71 ++++++ .../api/attach-tags-to-a-bookmark.api.mdx | 71 ++++++ .../api/create-a-new-bookmark.api.mdx | 71 ++++++ .../api/create-a-new-highlight.api.mdx | 71 ++++++ .../version-v0.27.0/api/create-a-new-list.api.mdx | 71 ++++++ .../version-v0.27.0/api/create-a-new-tag.api.mdx | 71 ++++++ .../version-v0.27.0/api/delete-a-bookmark.api.mdx | 71 ++++++ .../version-v0.27.0/api/delete-a-highlight.api.mdx | 71 ++++++ .../version-v0.27.0/api/delete-a-list.api.mdx | 71 ++++++ .../version-v0.27.0/api/delete-a-tag.api.mdx | 71 ++++++ .../version-v0.27.0/api/detach-asset.api.mdx | 71 ++++++ .../api/detach-tags-from-a-bookmark.api.mdx | 71 ++++++ .../version-v0.27.0/api/get-a-single-asset.api.mdx | 71 ++++++ .../api/get-a-single-bookmark.api.mdx | 71 ++++++ .../api/get-a-single-highlight.api.mdx | 71 ++++++ .../version-v0.27.0/api/get-a-single-list.api.mdx | 71 ++++++ .../version-v0.27.0/api/get-a-single-tag.api.mdx | 71 ++++++ .../version-v0.27.0/api/get-all-bookmarks.api.mdx | 71 ++++++ .../version-v0.27.0/api/get-all-highlights.api.mdx | 71 ++++++ .../version-v0.27.0/api/get-all-lists.api.mdx | 63 +++++ .../version-v0.27.0/api/get-all-tags.api.mdx | 63 +++++ .../api/get-bookmarks-in-the-list.api.mdx | 71 ++++++ .../api/get-bookmarks-with-the-tag.api.mdx | 71 ++++++ .../api/get-current-user-info.api.mdx | 63 +++++ .../api/get-current-user-stats.api.mdx | 63 +++++ .../api/get-highlights-of-a-bookmark.api.mdx | 71 ++++++ .../version-v0.27.0/api/karakeep-api.info.mdx | 82 ++++++ .../api/remove-a-bookmark-from-a-list.api.mdx | 71 ++++++ .../version-v0.27.0/api/replace-asset.api.mdx | 71 ++++++ .../version-v0.27.0/api/search-bookmarks.api.mdx | 71 ++++++ docs/versioned_docs/version-v0.27.0/api/sidebar.ts | 276 +++++++++++++++++++++ .../api/summarize-a-bookmark.api.mdx | 71 ++++++ .../version-v0.27.0/api/update-a-bookmark.api.mdx | 71 ++++++ .../version-v0.27.0/api/update-a-highlight.api.mdx | 71 ++++++ .../version-v0.27.0/api/update-a-list.api.mdx | 71 ++++++ .../version-v0.27.0/api/update-a-tag.api.mdx | 71 ++++++ .../version-v0.27.0/api/update-user.api.mdx | 71 ++++++ .../version-v0.27.0/api/upload-a-new-asset.api.mdx | 71 ++++++ 72 files changed, 4718 insertions(+) create mode 100644 docs/versioned_docs/version-v0.27.0/01-intro.md create mode 100644 docs/versioned_docs/version-v0.27.0/02-installation/01-docker.md create mode 100644 docs/versioned_docs/version-v0.27.0/02-installation/02-unraid.md create mode 100644 docs/versioned_docs/version-v0.27.0/02-installation/03-archlinux.md create mode 100644 docs/versioned_docs/version-v0.27.0/02-installation/04-kubernetes.md create mode 100644 docs/versioned_docs/version-v0.27.0/02-installation/05-pikapods.md create mode 100644 docs/versioned_docs/version-v0.27.0/02-installation/06-debuntu.md create mode 100644 docs/versioned_docs/version-v0.27.0/02-installation/07-minimal-install.md create mode 100644 docs/versioned_docs/version-v0.27.0/02-installation/08-truenas.md create mode 100644 docs/versioned_docs/version-v0.27.0/02-installation/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.0/03-configuration.md create mode 100644 docs/versioned_docs/version-v0.27.0/04-screenshots.md create mode 100644 docs/versioned_docs/version-v0.27.0/05-quick-sharing.md create mode 100644 docs/versioned_docs/version-v0.27.0/06-openai.md create mode 100644 docs/versioned_docs/version-v0.27.0/07-development/01-setup.md create mode 100644 docs/versioned_docs/version-v0.27.0/07-development/02-directories.md create mode 100644 docs/versioned_docs/version-v0.27.0/07-development/03-database.md create mode 100644 docs/versioned_docs/version-v0.27.0/07-development/04-architecture.md create mode 100644 docs/versioned_docs/version-v0.27.0/07-development/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.0/08-security-considerations.md create mode 100644 docs/versioned_docs/version-v0.27.0/09-command-line.md create mode 100644 docs/versioned_docs/version-v0.27.0/09-mcp.md create mode 100644 docs/versioned_docs/version-v0.27.0/10-import.md create mode 100644 docs/versioned_docs/version-v0.27.0/11-FAQ.md create mode 100644 docs/versioned_docs/version-v0.27.0/12-troubleshooting.md create mode 100644 docs/versioned_docs/version-v0.27.0/13-community-projects.md create mode 100644 docs/versioned_docs/version-v0.27.0/14-guides/01-legacy-container-upgrade.md create mode 100644 docs/versioned_docs/version-v0.27.0/14-guides/02-search-query-language.md create mode 100644 docs/versioned_docs/version-v0.27.0/14-guides/03-singlefile.md create mode 100644 docs/versioned_docs/version-v0.27.0/14-guides/04-hoarder-to-karakeep-migration.md create mode 100644 docs/versioned_docs/version-v0.27.0/14-guides/05-different-ai-providers.md create mode 100644 docs/versioned_docs/version-v0.27.0/14-guides/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.0/api/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.0/api/add-a-bookmark-to-a-list.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/attach-asset.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/attach-tags-to-a-bookmark.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/create-a-new-bookmark.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/create-a-new-highlight.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/create-a-new-list.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/create-a-new-tag.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/delete-a-bookmark.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/delete-a-highlight.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/delete-a-list.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/delete-a-tag.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/detach-asset.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/detach-tags-from-a-bookmark.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-a-single-asset.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-a-single-bookmark.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-a-single-highlight.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-a-single-list.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-a-single-tag.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-all-bookmarks.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-all-highlights.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-all-lists.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-all-tags.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-bookmarks-in-the-list.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-bookmarks-with-the-tag.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-current-user-info.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-current-user-stats.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/get-highlights-of-a-bookmark.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/karakeep-api.info.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/remove-a-bookmark-from-a-list.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/replace-asset.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/search-bookmarks.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/sidebar.ts create mode 100644 docs/versioned_docs/version-v0.27.0/api/summarize-a-bookmark.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/update-a-bookmark.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/update-a-highlight.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/update-a-list.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/update-a-tag.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/update-user.api.mdx create mode 100644 docs/versioned_docs/version-v0.27.0/api/upload-a-new-asset.api.mdx (limited to 'docs/versioned_docs') diff --git a/docs/versioned_docs/version-v0.27.0/01-intro.md b/docs/versioned_docs/version-v0.27.0/01-intro.md new file mode 100644 index 00000000..05d4ae30 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/01-intro.md @@ -0,0 +1,53 @@ +--- +slug: / +--- + +# Introduction + +Karakeep (previously Hoarder) is an open source "Bookmark Everything" app that uses AI for automatically tagging the content you throw at it. The app is built with self-hosting as a first class citizen. + +![Screenshot](https://raw.githubusercontent.com/karakeep-app/karakeep/main/screenshots/homepage.png) + + +## Features + +- 🔗 Bookmark links, take simple notes and store images and pdfs. +- ⬇️ Automatic fetching for link titles, descriptions and images. +- 📋 Sort your bookmarks into lists. +- 🔎 Full text search of all the content stored. +- ✨ AI-based (aka chatgpt) automatic tagging and summarization. With supports for local models using ollama! +- 🤖 Rule-based engine for customized management. +- 🎆 OCR for extracting text from images. +- 🔖 [Chrome plugin](https://chromewebstore.google.com/detail/karakeep/kgcjekpmcjjogibpjebkhaanilehneje) and [Firefox addon](https://addons.mozilla.org/en-US/firefox/addon/karakeep/) for quick bookmarking. +- 📱 An [iOS app](https://apps.apple.com/us/app/karakeep-app/id6479258022), and an [Android app](https://play.google.com/store/apps/details?id=app.hoarder.hoardermobile&pcampaignid=web_share). +- 📰 Auto hoarding from RSS feeds. +- 🔌 REST API and multiple clients. +- 🌐 Multi-language support. +- 🖍️ Mark and store highlights from your hoarded content. +- 🗄️ Full page archival (using [monolith](https://github.com/Y2Z/monolith)) to protect against link rot. +- ▶️ Auto video archiving using [yt-dlp](https://github.com/yt-dlp/yt-dlp). +- ☑️ Bulk actions support. +- 🔐 SSO support. +- 🌙 Dark mode support. +- 💾 Self-hosting first. +- ⬇️ Bookmark importers from Chrome, Pocket, Linkwarden, Omnivore, Tab Session Manager. +- 🔄 Automatic sync with browser bookmarks via [floccus](https://floccus.org/). +- [Planned] Offline reading on mobile, semantic search across bookmarks, ... + +**⚠️ This app is under heavy development.** + + +## Demo + +You can access the demo at [https://try.karakeep.app](https://try.karakeep.app). Login with the following creds: + +``` +email: demo@karakeep.app +password: demodemo +``` + +The demo is seeded with some content, but it's in read-only mode to prevent abuse. + +## About the name + +The name Karakeep is inspired by the Arabic word "كراكيب" (karakeeb), a colloquial term commonly used to refer to miscellaneous clutter, odds and ends, or items that may seem disorganized but often hold personal value or hidden usefulness. It evokes the image of a messy drawer or forgotten box, full of stuff you can't quite throw away—because somehow, it matters (or more likely, because you're a hoarder!). diff --git a/docs/versioned_docs/version-v0.27.0/02-installation/01-docker.md b/docs/versioned_docs/version-v0.27.0/02-installation/01-docker.md new file mode 100644 index 00000000..ff508b73 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/02-installation/01-docker.md @@ -0,0 +1,101 @@ +# Docker Compose [Recommended] + +### Requirements + +- Docker +- Docker Compose + +### 1. Create a new directory + +Create a new directory to host the compose file and env variables. + +This is where you’ll place the `docker-compose.yml` file from the next step and the environment variables. + +For example you could make a new directory called "karakeep-app" with the following command: +``` +mkdir karakeep-app +``` + + +### 2. Download the compose file + +Download the docker compose file provided [here](https://github.com/karakeep-app/karakeep/blob/main/docker/docker-compose.yml) directly into your new directory. + +``` +wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml +``` + +### 3. Populate the environment variables + +To configure the app, create a `.env` file in the directory and add this minimal env file: + +``` +KARAKEEP_VERSION=release +NEXTAUTH_SECRET=super_random_string +MEILI_MASTER_KEY=another_random_string +NEXTAUTH_URL=http://localhost:3000 +``` + +You **should** change the random strings. You can use `openssl rand -base64 36` in a seperate terminal window to generate the random strings. You should also change the `NEXTAUTH_URL` variable to point to your server address. + +Using `KARAKEEP_VERSION=release` will pull the latest stable version. You might want to pin the version instead to control the upgrades (e.g. `KARAKEEP_VERSION=0.10.0`). Check the latest versions [here](https://github.com/karakeep-app/karakeep/pkgs/container/karakeep). + +Persistent storage and the wiring between the different services is already taken care of in the docker compose file. + +Keep in mind that every time you change the `.env` file, you'll need to re-run `docker compose up`. + +If you want more config params, check the config documentation [here](/configuration). + +### 4. Setup OpenAI + +To enable automatic tagging, you'll need to configure OpenAI. This is optional though but highly recommended. + +- Follow [OpenAI's help](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) to get an API key. +- Add the OpenAI API key to the env file: + +``` +OPENAI_API_KEY= +``` + +Learn more about the costs of using openai [here](/openai). + +
+ If you want to use Ollama (https://ollama.com/) instead for local inference. + + **Note:** The quality of the tags you'll get will depend on the quality of the model you choose. + + - Make sure ollama is running. + - Set the `OLLAMA_BASE_URL` env variable to the address of the ollama API. + - Set `INFERENCE_TEXT_MODEL` to the model you want to use for text inference in ollama (for example: `llama3.1`) + - Set `INFERENCE_IMAGE_MODEL` to the model you want to use for image inference in ollama (for example: `llava`) + - Make sure that you `ollama pull`-ed the models that you want to use. + - You might want to tune the `INFERENCE_CONTEXT_LENGTH` as the default is quite small. The larger the value, the better the quality of the tags, but the more expensive the inference will be. + +
+ +### 5. Start the service + +Start the service by running: + +``` +docker compose up -d +``` + +Then visit `http://localhost:3000` and you should be greeted with the Sign In page. + +### [Optional] 6. Enable optional features + +Check the [configuration docs](/configuration) for extra features to enable such as full page archival, full page screenshots, inference languages, etc. + +### [Optional] 7. Setup quick sharing extensions + +Go to the [quick sharing page](/quick-sharing) to install the mobile apps and the browser extensions. Those will help you hoard things faster! + +## Updating + +Updating Karakeep will depend on what you used for the `KARAKEEP_VERSION` env variable. + +- If you pinned the app to a specific version, bump the version and re-run `docker compose up -d`. This should pull the new version for you. +- If you used `KARAKEEP_VERSION=release`, you'll need to force docker to pull the latest version by running `docker compose up --pull always -d`. + +Note that if you want to upgrade/migrate `Meilisearch` versions, refer to the [troubleshooting](/troubleshooting) page. diff --git a/docs/versioned_docs/version-v0.27.0/02-installation/02-unraid.md b/docs/versioned_docs/version-v0.27.0/02-installation/02-unraid.md new file mode 100644 index 00000000..5ca3e027 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/02-installation/02-unraid.md @@ -0,0 +1,19 @@ +# Unraid + +## Docker Compose Manager Plugin (Recommended) + +You can use [Docker Compose Manager](https://forums.unraid.net/topic/114415-plugin-docker-compose-manager/) plugin to deploy Karakeep using the official docker compose file provided [here](https://github.com/karakeep-app/karakeep/blob/main/docker/docker-compose.yml). After creating the stack, you'll need to setup some env variables similar to that from the docker compose installation docs [here](/Installation/docker#3-populate-the-environment-variables). + +## Community Apps + +:::info +The community application template is maintained by the community. +::: + +Karakeep can be installed on Unraid using the community application plugins. Karakeep is a multi-container service, and because unraid doesn't natively support that, you'll have to install the different pieces as separate applications and wire them manually together. + +Here's a high level overview of the services you'll need: + +- **Karakeep** ([Support post](https://forums.unraid.net/topic/165108-support-collectathon-karakeep/)): Karakeep's main web app. +- **Browserless** ([Support post](https://forums.unraid.net/topic/130163-support-template-masterwishxbrowserless/)): The chrome headless service used for fetching the content. Karakeep's official docker compose doesn't use browserless, but it's currently the only headless chrome service available on unraid, so you'll have to use it. +- **MeiliSearch** ([Support post](https://forums.unraid.net/topic/164847-support-collectathon-meilisearch/)): The search engine used by Karakeep. It's optional but highly recommended. If you don't have it set up, search will be disabled. diff --git a/docs/versioned_docs/version-v0.27.0/02-installation/03-archlinux.md b/docs/versioned_docs/version-v0.27.0/02-installation/03-archlinux.md new file mode 100644 index 00000000..63db9d75 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/02-installation/03-archlinux.md @@ -0,0 +1,95 @@ +# Arch Linux + +## Installation + +> [Karakeep on AUR](https://aur.archlinux.org/packages/karakeep) is not maintained by the karakeep official. + +1. Install karakeep + + ```shell + paru -S karakeep + ``` + +2. (**Optional**) Install optional dependencies + + ```shell + # karakeep-cli: karakeep cli tool + paru -S karakeep-cli + + # ollama: for automatic tagging + sudo pacman -S ollama + + # yt-dlp: for download video + sudo pacman -S yt-dlp + ``` + + You can use Open-AI instead of `ollama`. If you use `ollama`, you need to download the ollama model. Please refer to: [https://ollama.com/library](https://ollama.com/library). + +3. Set up + + Environment variables can be set in `/etc/karakeep/karakeep.env` according to [configuration page](/configuration). **The environment variables that are not specified in `/etc/karakeep/karakeep.env` need to be added by yourself.** + +4. Enable service + + ```shell + sudo systemctl enable --now karakeep.target + ``` + + Then visit `http://localhost:3000` and you should be greated with the sign in page. + +## Services and Ports + +`karakeep.target` include 3 services: `karakeep-web.service`, `karakeep-works.service`, `karakeep-browser.service`. + +- `karakeep-web.service`: Provide karakeep webui service, uses `3000` port by default. + +- `karakeep-workers.service`: Provide karakeep workers service, no port. + +- `karakeep-browser.service`: Provide browser headless service, uses `9222` port by default. + +Now `karakeep` depends on `meilisearch`, and `karakeep-workers.service` wants `meilisearch.service`, starting `karakeep.target` will start `meilisearch.service` at the same time. + +## How to Migrate from Hoarder to Karakeep + +The PKGBUILD has been fully updated to replace all references to `hoarder` with `karakeep`. If you want to preserve your existing `hoarder` data during the upgrade, please follow the steps below: + +**1. Stop the old services** + +```shell +sudo systemctl stop hoarder-web.service hoarder-worker.service hoarder-browser.service +sudo systemctl disable --now hoarder.target +``` + +**2. Uninstall Hoarder** +After uninstalling, you can manually remove the old `hoarder` user and group if needed. +```shell +paru -R hoarder +``` + +**3. Rename the old data directory** +```shell +sudo mv /var/lib/hoarder /var/lib/karakeep +``` + +**4. Install Karakeep** +```shell +paru -S karakeep +``` + +**5. Fix ownership of the data directory** +```shell +sudo chown -R karakeep:karakeep /var/lib/karakeep +``` + +**6. Set Karakeep** +Edit `/etc/karakeep/karakeep.env` according to [configuration page](/configuration). **The environment variables that are not specified in `/etc/karakeep/karakeep.env` need to be added by yourself.** + +Or you can copy old hoarder env file to karakeep: +```shell +sudo cp -f /etc/hoarder/hoarder.env /etc/karakeep/karakeep.env +``` + +**7. Start Karakeep** +```shell +sudo systemctl enable --now karakeep.target +``` diff --git a/docs/versioned_docs/version-v0.27.0/02-installation/04-kubernetes.md b/docs/versioned_docs/version-v0.27.0/02-installation/04-kubernetes.md new file mode 100644 index 00000000..b8c40551 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/02-installation/04-kubernetes.md @@ -0,0 +1,112 @@ +# Kubernetes + +### Requirements + +- A kubernetes cluster +- kubectl +- kustomize + +### 1. Get the deployment manifests + +You can clone the repository and copy the `/kubernetes` directory into another directory of your choice. + +### 2. Populate the environment variables and secrets + +To configure the app, copy the `.env_sample` to `.env` and change to your specific needs. + +You should also change the `NEXTAUTH_URL` variable to point to your server address. + +Using `KARAKEEP_VERSION=release` will pull the latest stable version. You might want to pin the version instead to control the upgrades (e.g. `KARAKEEP_VERSION=0.10.0`). Check the latest versions [here](https://github.com/karakeep-app/karakeep/pkgs/container/karakeep). + +To see all available configuration options check the [documentation](https://docs.karakeep.app/configuration). + +To configure the neccessary secrets for the application copy the `.secrets_sample` file to `.secrets` and change the sample secrets to your generated secrets. + +> Note: You **should** change the random strings. You can use `openssl rand -base64 36` to generate the random strings. + +### 3. Setup OpenAI + +To enable automatic tagging, you'll need to configure OpenAI. This is optional though but highly recommended. + +- Follow [OpenAI's help](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) to get an API key. +- Add the OpenAI API key to the `.env` file: + +``` +OPENAI_API_KEY= +``` + +Learn more about the costs of using openai [here](/openai). + +
+ [EXPERIMENTAL] If you want to use Ollama (https://ollama.com/) instead for local inference. + + **Note:** The quality of the tags you'll get will depend on the quality of the model you choose. Running local models is a recent addition and not as battle tested as using openai, so proceed with care (and potentially expect a bunch of inference failures). + + - Make sure ollama is running. + - Set the `OLLAMA_BASE_URL` env variable to the address of the ollama API. + - Set `INFERENCE_TEXT_MODEL` to the model you want to use for text inference in ollama (for example: `mistral`) + - Set `INFERENCE_IMAGE_MODEL` to the model you want to use for image inference in ollama (for example: `llava`) + - Make sure that you `ollama pull`-ed the models that you want to use. + + +
+ +### 4. Deploy the service + +Deploy the service by running: + +``` +make deploy +``` + +### 5. Access the service + +#### via LoadBalancer IP + +By default, these manifests expose the application as a LoadBalancer Service. You can run `kubectl get services` to identify the IP of the loadbalancer for your service. + +Then visit `http://:3000` and you should be greated with the Sign In page. + +> Note: Depending on your setup you might want to expose the service via an Ingress, or have a different means to access it. + +#### Via Ingress + +If you want to use an ingress, you can customize the sample ingress in the kubernetes folder and change the host to the DNS name of your choice. + +After that you have to configure the web service to the type ClusterIP so it is only reachable via the ingress. + +If you have already deployed the service you can patch the web service to the type ClusterIP with the following command: + +` kubectl -n karakeep patch service web -p '{"spec":{"type":"ClusterIP"}}' ` + +Afterwards you can apply the ingress and access the service via your chosen URL. + +#### Setting up HTTPS access to the Service + +To access karakeep securely you can configure the ingress to use a preconfigured TLS certificate. This requires that you already have the needed files, namely your .crt and .key file, on hand. + +After you have deployed the karakeep manifests you can deploy your certificate for karakeep in the `karakeep` namespace with this example command. You can name the secret however you want. But be aware that the secret name in the ingress definition has to match the secret name. + +` $ kubectl --namespace karakeep create secret tls karakeep-web-tls --cert=/path/to/crt --key=/path/to/key ` + +If the secret is successfully created you can now configure the Ingress to use TLS via this changes to the spec: + +```` yaml + spec: + tls: + - hosts: + - karakeep.example.com + secretName: karakeep-web-tls +```` + +> Note: Be aware that the hosts have to match between the tls spec and the HTTP spec. + +### [Optional] 6. Setup quick sharing extensions + +Go to the [quick sharing page](/quick-sharing) to install the mobile apps and the browser extensions. Those will help you hoard things faster! + +## Updating + +Edit the `KARAKEEP_VERSION` variable in the `kustomization.yaml` file and run `make clean deploy`. + +If you have chosen `release` as the image tag you can also destroy the web pod, since the deployment has an ImagePullPolicy set to always the pod always pulls the image from the registry, this way we can ensure that the newest release image is pulled. diff --git a/docs/versioned_docs/version-v0.27.0/02-installation/05-pikapods.md b/docs/versioned_docs/version-v0.27.0/02-installation/05-pikapods.md new file mode 100644 index 00000000..dad0785a --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/02-installation/05-pikapods.md @@ -0,0 +1,32 @@ +# PikaPods [Paid Hosting] + +:::info +Note: PikaPods shares some of its revenue from hosting Karakeep with the maintainer of this project. +::: + +[PikaPods](https://www.pikapods.com/) offers managed paid hosting for many open source apps, including Karakeep. +Server administration, updates, migrations and backups are all taken care of, which makes it well suited +for less technical users. As of Nov 2024, running Karakeep there will cost you ~$3 per month. + +### Requirements + +- A _PikaPods_ account. Can be created for free [here](https://www.pikapods.com/register). You get an initial welcome credit of $5. + +### 1. Choose app + +Choose _Karakeep_ from their [list of apps](https://www.pikapods.com/apps) or use this [direct link](https://www.pikapods.com/pods?run=hoarder). This will either +open a new dialog to add a new _Karakeep_ pod or ask you to log in. + +### 2. Add settings + +There are a few settings to configure in the dialog: + +- **Basics**: Give the pod a name and choose a region that's near you. +- **Env Vars**: Here you can disable signups or set an OpenAI API key. All settings are optional. +- **Resources**: The resources your _Karakeep_ pod can use. The defaults are fine, unless you have a very large collection. + +### 3. Start pod and add user + +After hitting _Add pod_ it will take about a minute for the app to fully start. After this you can visit +the pod's URL and add an initial user under _Sign Up_. After this you may want to disable further sign-ups +by setting the pod's `DISABLE_SIGNUPS` _Env Var_ to `true`. diff --git a/docs/versioned_docs/version-v0.27.0/02-installation/06-debuntu.md b/docs/versioned_docs/version-v0.27.0/02-installation/06-debuntu.md new file mode 100644 index 00000000..2f3d1113 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/02-installation/06-debuntu.md @@ -0,0 +1,74 @@ +# Debian 12/Ubuntu 24.04 + +:::warning +This script is a stripped-down version of those found in the [Proxmox Community Scripts](https://github.com/community-scripts/ProxmoxVE) repo. It has been adapted to work on baremetal Debian 12 or Ubuntu 24.04 installs **only**. Any other use is not supported and you use this script at your own risk. +::: + +### Requirements + +- **Debian 12** (Buster) or +- **Ubuntu 24.04** (Noble Numbat) + +The script will download and install all dependencies (except for Ollama), install Karakeep, do a basic configuration of Karakeep and Meilisearch (the search app used by Karakeep), and create and enable the systemd service files needed to run Karakeep on startup. Karakeep and Meilisearch are run in the context of their low-privilege user environments for more security. + +The script functions as an update script in addition to an installer. See **[Updating](#updating)**. + +### 1. Download the script from the [Karakeep repository](https://github.com/karakeep-app/karakeep/blob/main/karakeep-linux.sh) + +``` +wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/karakeep-linux.sh +``` + +### 2. Run the script + +> This script must be run as `root`, or as a user with `sudo` privileges. + + If this is a fresh install, then run the installer by using the following command: + + ```shell + bash karakeep-linux.sh install + ``` + +### 3. Create an account/sign in + + Then visit `http://localhost:3000` and you should be greated with the Sign In page. + +## Updating + +> This script must be run as `root`, or as a user with `sudo` privileges. + + If Karakeep has previously been installed using this script, then run the updater like so: + + ```shell + bash karakeep-linux.sh update + ``` + +## Services and Ports + +`karakeep.target` includes 4 services: `meilisearch.service`, `karakeep-web.service`, `karakeep-workers.service`, `karakeep-browser.service`. + +- `meilisearch.service`: Provides full-text search, Karakeep Workers service connects to it, uses port `7700` by default. + +- `karakeep-web.service`: Provides the karakeep web service, uses `3000` port by default. + +- `karakeep-workers.service`: Provides the karakeep workers service, no port. + +- `karakeep-browser.service`: Provides the headless browser service, uses `9222` port by default. + +## Configuration, ENV file, database locations + +During installation, the script created a configuration file for `meilisearch`, an `ENV` file for Karakeep, and located config paths and database paths separate from the installation path of Karakeep, so as to allow for easier updating. Their names/locations are as follows: + +- `/etc/meilisearch.toml` - a basic configuration for meilisearch, that contains configs for the database location, disabling analytics, and using a master key, which prevents unauthorized connections. +- `/var/lib/meilisearch` - Meilisearch DB location. +- `/etc/karakeep/karakeep.env` - The Karakeep `ENV` file. Edit this file to configure Karakeep beyond the default. The web service and the workers service need to be restarted after editing this file: + + ```shell + sudo systemctl restart karakeep-workers karakeep-web + ``` + +- `/var/lib/karakeep` - The Karakeep database location. If you delete the contents of this folder you will lose all your data. + +## Still Running Hoarder? + +There is a way to upgrade. Please see [Guides > Hoarder to Karakeep Migration](https://docs.karakeep.app/Guides/hoarder-to-karakeep-migration) diff --git a/docs/versioned_docs/version-v0.27.0/02-installation/07-minimal-install.md b/docs/versioned_docs/version-v0.27.0/02-installation/07-minimal-install.md new file mode 100644 index 00000000..211bfb08 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/02-installation/07-minimal-install.md @@ -0,0 +1,49 @@ +# Minimal Installation + +:::warning +Unless necessary, prefer the [full installation](/Installation/docker) to leverage all the features of Karakeep. You'll be sacrificing a lot of functionality if you go with the minimal installation route. +::: + +Karakeep's default installation has a dependency on Meilisearch for the full text search, Chrome for crawling and OpenAI/Ollama for AI tagging. You can however run Karakeep without those dependencies if you're willing to sacrifice those features. + +- If you run without meilisearch, the search functionality will be completely disabled. +- If you run without chrome, crawling will still work, but you'll lose ability to take screenshots of websites and websites with javascript content won't get crawled correctly. +- If you don't setup OpenAI/Ollama, AI tagging will be disabled. + +Those features are important for leveraging Karakeep's full potential, but if you're running in constrained environments, you can use the following minimal docker compose to skip all those dependencies: + +```yaml +services: + web: + image: ghcr.io/karakeep-app/karakeep:release + restart: unless-stopped + volumes: + - data:/data + ports: + - 3000:3000 + environment: + DATA_DIR: /data + NEXTAUTH_SECRET: super_random_string +volumes: + data: +``` + +Or just with the following docker command: + +```base +docker run -d \ + --restart unless-stopped \ + -v data:/data \ + -p 3000:3000 \ + -e DATA_DIR=/data \ + -e NEXTAUTH_SECRET=super_random_string \ + ghcr.io/karakeep-app/karakeep:release +``` + +:::warning +You **MUST** change the `super_random_string` to a true random string which you can generate with `openssl rand -hex 32`. +::: + +Check the [configuration docs](/configuration) for extra features to enable such as full page archival, full page screenshots, inference languages, etc. + + diff --git a/docs/versioned_docs/version-v0.27.0/02-installation/08-truenas.md b/docs/versioned_docs/version-v0.27.0/02-installation/08-truenas.md new file mode 100644 index 00000000..9b7989c2 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/02-installation/08-truenas.md @@ -0,0 +1,3 @@ +# TrueNAS + +Karakeep is available directly from TrueNAS's app catalog ([link](https://apps.truenas.com/catalog/karakeep/)). diff --git a/docs/versioned_docs/version-v0.27.0/02-installation/_category_.json b/docs/versioned_docs/version-v0.27.0/02-installation/_category_.json new file mode 100644 index 00000000..acb94a71 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/02-installation/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Installation", +} diff --git a/docs/versioned_docs/version-v0.27.0/03-configuration.md b/docs/versioned_docs/version-v0.27.0/03-configuration.md new file mode 100644 index 00000000..0f61360f --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/03-configuration.md @@ -0,0 +1,229 @@ +# Configuration + +The app is mainly configured by environment variables. All the used environment variables are listed in [packages/shared/config.ts](https://github.com/karakeep-app/karakeep/blob/main/packages/shared/config.ts). The most important ones are: + +| Name | Required | Default | Description | +| ------------------------------- | ------------------------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| PORT | No | 3000 | The port on which the web server will listen. DON'T CHANGE THIS IF YOU'RE USING DOCKER, instead changed the docker bound external port. | +| WORKERS_PORT | No | 0 (Random Port) | The port on which the worker will export its prometheus metrics on `/metrics`. By default it's a random unused port. If you want to utilize those metrics, fix the port to a value (and export it in docker if you're using docker). | +| WORKERS_ENABLED_WORKERS | No | Not set | Comma separated list of worker names to enable. If set, only these workers will run. Valid values: crawler,inference,search,tidyAssets,video,feed,assetPreprocessing,webhook,ruleEngine. | +| WORKERS_DISABLED_WORKERS | No | Not set | Comma separated list of worker names to disable. Takes precedence over `WORKERS_ENABLED_WORKERS`. | +| DATA_DIR | Yes | Not set | The path for the persistent data directory. This is where the db lives. Assets are stored here by default unless `ASSETS_DIR` is set. | +| ASSETS_DIR | No | Not set | The path where crawled assets will be stored. If not set, defaults to `${DATA_DIR}/assets`. | +| NEXTAUTH_URL | Yes | Not set | Should point to the address of your server. The app will function without it, but will redirect you to wrong addresses on signout for example. | +| NEXTAUTH_SECRET | Yes | Not set | Random string used to sign the JWT tokens. Generate one with `openssl rand -base64 36`. | +| MEILI_ADDR | No | Not set | The address of meilisearch. If not set, Search will be disabled. E.g. (`http://meilisearch:7700`) | +| MEILI_MASTER_KEY | Only in Prod and if search is enabled | Not set | The master key configured for meilisearch. Not needed in development environment. Generate one with `openssl rand -base64 36 \| tr -dc 'A-Za-z0-9'` | +| MAX_ASSET_SIZE_MB | No | 50 | Sets the maximum allowed asset size (in MB) to be uploaded | +| DISABLE_NEW_RELEASE_CHECK | No | false | If set to true, latest release check will be disabled in the admin panel. | +| PROMETHEUS_AUTH_TOKEN | No | Random | Enable a prometheus metrics endpoint at `/api/metrics`. This endpoint will require this token being passed in the Authorization header as a Bearer token. If not set, a new random token is generated everytime at startup. | +| RATE_LIMITING_ENABLED | No | false | If set to true, API rate limiting will be enabled. | +| DB_WAL_MODE | No | false | Enables WAL mode for the sqlite database. This should improve the performance of the database. There's no reason why you shouldn't set this to true unless you're running the db on a network attached drive. This will become the default at some time in the future. | +| SEARCH_NUM_WORKERS | No | 1 | Number of concurrent workers for search indexing tasks. Increase this if you have a high volume of content being indexed for search. | +| WEBHOOK_NUM_WORKERS | No | 1 | Number of concurrent workers for webhook delivery. Increase this if you have multiple webhook endpoints or high webhook traffic. | +| ASSET_PREPROCESSING_NUM_WORKERS | No | 1 | Number of concurrent workers for asset preprocessing tasks (image processing, OCR, etc.). Increase this if you have many images or documents that need processing. | +| RULE_ENGINE_NUM_WORKERS | No | 1 | Number of concurrent workers for rule engine processing. Increase this if you have complex automation rules that need to be processed quickly. | + +## Asset Storage + +Karakeep supports two storage backends for assets: local filesystem (default) and S3-compatible object storage. S3 storage is automatically detected when an S3 endpoint is passed. + +| Name | Required | Default | Description | +| -------------------------------- | ----------------- | ------- | --------------------------------------------------------------------------------------------------------- | +| ASSET_STORE_S3_ENDPOINT | No | Not set | The S3 endpoint URL. Required for S3-compatible services like MinIO. **Setting this enables S3 storage**. | +| ASSET_STORE_S3_REGION | No | Not set | The S3 region to use. | +| ASSET_STORE_S3_BUCKET | Yes when using S3 | Not set | The S3 bucket name where assets will be stored. | +| ASSET_STORE_S3_ACCESS_KEY_ID | Yes when using S3 | Not set | The S3 access key ID for authentication. | +| ASSET_STORE_S3_SECRET_ACCESS_KEY | Yes when using S3 | Not set | The S3 secret access key for authentication. | +| ASSET_STORE_S3_FORCE_PATH_STYLE | No | false | Whether to force path-style URLs for S3 requests. Set to true for MinIO and other S3-compatible services. | + +:::info +When using S3 storage, make sure the bucket exists and the provided credentials have the necessary permissions to read, write, and delete objects in the bucket. +::: + +:::warning +Switching between storage backends after data has been stored will require manual migration of existing assets. Plan your storage backend choice carefully before deploying. +::: + +## Authentication / Signup + +By default, Karakeep uses the database to store users, but it is possible to also use OAuth. +The flags need to be provided to the `web` container. + +:::info +Only OIDC compliant OAuth providers are supported! For information on how to set it up, consult the documentation of your provider. +::: + +:::info +When setting up OAuth, the allowed redirect URLs configured at the provider should be set to `/api/auth/callback/custom` where `` is the address you configured in `NEXTAUTH_URL` (for example: `https://try.karakeep.app/api/auth/callback/custom`). +::: + +| Name | Required | Default | Description | +| ------------------------------------------- | -------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| DISABLE_SIGNUPS | No | false | If enabled, no new signups will be allowed and the signup button will be disabled in the UI | +| DISABLE_PASSWORD_AUTH | No | false | If enabled, only signups and logins using OAuth are allowed and the signup button and login form for local accounts will be disabled in the UI | +| EMAIL_VERIFICATION_REQUIRED | No | false | Whether email verification is required during user signup. If enabled, users must verify their email address before they can use their account. If you enable this, you must configure SMTP settings. | +| OAUTH_WELLKNOWN_URL | No | Not set | The "wellknown Url" for openid-configuration as provided by the OAuth provider | +| OAUTH_CLIENT_SECRET | No | Not set | The "Client Secret" as provided by the OAuth provider | +| OAUTH_CLIENT_ID | No | Not set | The "Client ID" as provided by the OAuth provider | +| OAUTH_SCOPE | No | "openid email profile" | "Full list of scopes to request (space delimited)" | +| OAUTH_PROVIDER_NAME | No | "Custom Provider" | The name of your provider. Will be shown on the signup page as "Sign in with ``" | +| OAUTH_ALLOW_DANGEROUS_EMAIL_ACCOUNT_LINKING | No | false | Whether existing accounts in karakeep stored in the database should automatically be linked with your OAuth account. Only enable it if you trust the OAuth provider! | +| OAUTH_TIMEOUT | No | 3500 | The wait time in milliseconds for the OAuth provider response. Increase this if you are having `outgoing request timed out` errors | + +For more information on `OAUTH_ALLOW_DANGEROUS_EMAIL_ACCOUNT_LINKING`, check the [next-auth.js documentation](https://next-auth.js.org/configuration/providers/oauth#allowdangerousemailaccountlinking-option). + +## Inference Configs (For automatic tagging) + +Either `OPENAI_API_KEY` or `OLLAMA_BASE_URL` need to be set for automatic tagging to be enabled. Otherwise, automatic tagging will be skipped. + +:::warning + +- The quality of the tags you'll get will depend on the quality of the model you choose. +- You might want to tune the `INFERENCE_CONTEXT_LENGTH` as the default is quite small. The larger the value, the better the quality of the tags, but the more expensive the inference will be (money-wise on OpenAI and resource-wise on ollama). + ::: + +| Name | Required | Default | Description | +| ------------------------------------ | -------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OPENAI_API_KEY | No | Not set | The OpenAI key used for automatic tagging. More on that in [here](/openai). | +| OPENAI_BASE_URL | No | Not set | If you just want to use OpenAI you don't need to pass this variable. If, however, you want to use some other openai compatible API (e.g. azure openai service), set this to the url of the API. | +| OLLAMA_BASE_URL | No | Not set | If you want to use ollama for local inference, set the address of ollama API here. | +| OLLAMA_KEEP_ALIVE | No | Not set | Controls how long the model will stay loaded into memory following the request (example value: "5m"). | +| INFERENCE_TEXT_MODEL | No | gpt-4.1-mini | The model to use for text inference. You'll need to change this to some other model if you're using ollama. | +| INFERENCE_IMAGE_MODEL | No | gpt-4o-mini | The model to use for image inference. You'll need to change this to some other model if you're using ollama and that model needs to support vision APIs (e.g. llava). | +| EMBEDDING_TEXT_MODEL | No | text-embedding-3-small | The model to be used for generating embeddings for the text. | +| INFERENCE_CONTEXT_LENGTH | No | 2048 | The max number of tokens that we'll pass to the inference model. If your content is larger than this size, it'll be truncated to fit. The larger this value, the more of the content will be used in tag inference, but the more expensive the inference will be (money-wise on openAI and resource-wise on ollama). Check the model you're using for its max supported content size. | +| INFERENCE_MAX_OUTPUT_TOKENS | No | 2048 | The maximum number of tokens that the inference model is allowed to generate in its response. This controls the length of AI-generated content like tags and summaries. Increase this if you need longer responses, but be aware that higher values will increase costs (for OpenAI) and processing time. | +| INFERENCE_LANG | No | english | The language in which the tags will be generated. | +| INFERENCE_NUM_WORKERS | No | 1 | Number of concurrent workers for AI inference tasks (tagging and summarization). Increase this if you have multiple AI inference requests and want to process them in parallel. | +| INFERENCE_ENABLE_AUTO_TAGGING | No | true | Whether automatic AI tagging is enabled or disabled. | +| INFERENCE_ENABLE_AUTO_SUMMARIZATION | No | false | Whether automatic AI summarization is enabled or disabled. | +| INFERENCE_JOB_TIMEOUT_SEC | No | 30 | How long to wait for the inference job to finish before timing out. If you're running ollama without powerful GPUs, you might want to increase the timeout a bit. | +| INFERENCE_FETCH_TIMEOUT_SEC | No | 300 | \[Ollama Only\] The timeout of the fetch request to the ollama server. If your inference requests take longer than the default 5mins, you might want to increase this timeout. | +| INFERENCE_SUPPORTS_STRUCTURED_OUTPUT | No | Not set | \[DEPRECATED\] Whether the inference model supports structured output or not. Use INFERENCE_OUTPUT_SCHEMA instead. Setting this to true translates to INFERENCE_OUTPUT_SCHEMA=structured, and to false translates to INFERENCE_OUTPUT_SCHEMA=plain. | +| INFERENCE_OUTPUT_SCHEMA | No | structured | Possible values are "structured", "json", "plain". Structured is the preferred option, but if your model doesn't support it, you can use "json" if your model supports JSON mode, otherwise "plain" which should be supported by all the models but the model might not output the data in the correct format. | + +:::info + +- You can append additional instructions to the prompt used for automatic tagging, in the `AI Settings` (in the `User Settings` screen) +- You can use the placeholders `$tags`, `$aiTags`, `$userTags` in the prompt. These placeholders will be replaced with all tags, ai generated tags or human created tags when automatic tagging is performed (e.g. `[karakeep, computer, ai]`) + ::: + +## Crawler Configs + +| Name | Required | Default | Description | +| ---------------------------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| CRAWLER_NUM_WORKERS | No | 1 | Number of allowed concurrent crawling jobs. By default, we're only doing one crawling request at a time to avoid consuming a lot of resources. | +| BROWSER_WEB_URL | No | Not set | The browser's http debugging address. The worker will talk to this endpoint to resolve the debugging console's websocket address. If you already have the websocket address, use `BROWSER_WEBSOCKET_URL` instead. If neither `BROWSER_WEB_URL` nor `BROWSER_WEBSOCKET_URL` are set, the worker will use plain http requests skipping screenshotting and javascript execution. | +| BROWSER_WEBSOCKET_URL | No | Not set | The websocket address of browser's debugging console. If you want to use [browserless](https://browserless.io), use their websocket address here. If neither `BROWSER_WEB_URL` nor `BROWSER_WEBSOCKET_URL` are set, the worker will use plain http requests skipping screenshotting and javascript execution. | +| BROWSER_CONNECT_ONDEMAND | No | false | If set to false, the crawler will proactively connect to the browser instance and always maintain an active connection. If set to true, the browser will be launched on demand only whenever a crawling is requested. Set to true if you're using a service that provides you with browser instances on demand. | +| CRAWLER_DOWNLOAD_BANNER_IMAGE | No | true | Whether to cache the banner image used in the cards locally or fetch it each time directly from the website. Caching it consumes more storage space, but is more resilient against link rot and rate limits from websites. | +| CRAWLER_STORE_SCREENSHOT | No | true | Whether to store a screenshot from the crawled website or not. Screenshots act as a fallback for when we fail to extract an image from a website. You can also view the stored screenshots for any link. | +| CRAWLER_FULL_PAGE_SCREENSHOT | No | false | Whether to store a screenshot of the full page or not. Disabled by default, as it can lead to much higher disk usage. If disabled, the screenshot will only include the visible part of the page | +| CRAWLER_SCREENSHOT_TIMEOUT_SEC | No | 5 | How long to wait for the screenshot finish before timing out. If you are capturing full-page screenshots of long webpages, consider increasing this value. | +| CRAWLER_FULL_PAGE_ARCHIVE | No | false | Whether to store a full local copy of the page or not. Disabled by default, as it can lead to much higher disk usage. If disabled, only the readable text of the page is archived. | +| CRAWLER_JOB_TIMEOUT_SEC | No | 60 | How long to wait for the crawler job to finish before timing out. If you have a slow internet connection or a low powered device, you might want to bump this up a bit | +| CRAWLER_NAVIGATE_TIMEOUT_SEC | No | 30 | How long to spend navigating to the page (along with its redirects). Increase this if you have a slow internet connection | +| CRAWLER_VIDEO_DOWNLOAD | No | false | Whether to download videos from the page or not (using yt-dlp) | +| CRAWLER_VIDEO_DOWNLOAD_MAX_SIZE | No | 50 | The maximum file size for the downloaded video. The quality will be chosen accordingly. Use -1 to disable the limit. | +| CRAWLER_VIDEO_DOWNLOAD_TIMEOUT_SEC | No | 600 | How long to wait for the video download to finish | +| CRAWLER_ENABLE_ADBLOCKER | No | true | Whether to enable an adblocker in the crawler or not. If you're facing troubles downloading the adblocking lists on worker startup, you can disable this. | +| CRAWLER_YTDLP_ARGS | No | [] | Include additional yt-dlp arguments to be passed at crawl time separated by %%: https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#general-options | +| BROWSER_COOKIE_PATH | No | Not set | Path to a JSON file containing cookies to be loaded into the browser context. The file should be an array of cookie objects, each with name and value (required), and optional fields like domain, path, expires, httpOnly, secure, and sameSite (e.g., `[{"name": "session", "value": "xxx", "domain": ".example.com"}`]). | + +
+ + More info on BROWSER_COOKIE_PATH + +BROWSER_COOKIE_PATH specifies the path to a JSON file containing cookies to be loaded into the browser context for crawling. + +The JSON file must be an array of cookie objects, each with: +- name: The cookie name (required). +- value: The cookie value (required). +- Optional fields: domain, path, expires, httpOnly, secure, sameSite (values: "Strict", "Lax", or "None"). + +Example JSON file: + +```json +[ + { + "name": "session", + "value": "xxx", + "domain": ".example.com", + "path": "/", + "expires": 1735689600, + "httpOnly": true, + "secure": true, + "sameSite": "Lax" + } +] +``` + +
+ +## OCR Configs + +Karakeep uses [tesseract.js](https://github.com/naptha/tesseract.js) to extract text from images. + +| Name | Required | Default | Description | +| ------------------------ | -------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OCR_CACHE_DIR | No | $TEMP_DIR | The dir where tesseract will download its models. By default, those models are not persisted and stored in the OS' temp dir. | +| OCR_LANGS | No | eng | Comma separated list of the language codes that you want tesseract to support. You can find the language codes [here](https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html). Set to empty string to disable OCR. | +| OCR_CONFIDENCE_THRESHOLD | No | 50 | A number between 0 and 100 indicating the minimum acceptable confidence from tessaract. If tessaract's confidence is lower than this value, extracted text won't be stored. | + +## Webhook Configs + +You can use webhooks to trigger actions when bookmarks are created, changed or crawled. + +| Name | Required | Default | Description | +| ------------------- | -------- | ------- | ------------------------------------------------- | +| WEBHOOK_TIMEOUT_SEC | No | 5 | The timeout for the webhook request in seconds. | +| WEBHOOK_RETRY_TIMES | No | 3 | The number of times to retry the webhook request. | + +:::info + +- The WEBHOOK_TOKEN is used for authentication. It will appear in the Authorization header as Bearer token. + ``` + Authorization: Bearer + ``` +- The webhook will be triggered with the job id (used for idempotence), bookmark id, bookmark type, the user id, the url and the operation in JSON format in the body. + + ```json + { + "jobId": "123", + "type": "link", + "bookmarkId": "exampleBookmarkId", + "userId": "exampleUserId", + "url": "https://example.com", + "operation": "crawled" + } + ``` + + ::: + +## SMTP Configuration + +Karakeep can send emails for various purposes such as email verification during signup. Configure these settings to enable email functionality. + +| Name | Required | Default | Description | +| ------------- | -------- | ------- | ----------------------------------------------------------------------------------------------- | +| SMTP_HOST | No | Not set | The SMTP server hostname or IP address. Required if you want to enable email functionality. | +| SMTP_PORT | No | 587 | The SMTP server port. Common values are 587 (STARTTLS), 465 (SSL/TLS), or 25 (unencrypted). | +| SMTP_SECURE | No | false | Whether to use SSL/TLS encryption. Set to true for port 465, false for port 587 with STARTTLS. | +| SMTP_USER | No | Not set | The username for SMTP authentication. Usually your email address. | +| SMTP_PASSWORD | No | Not set | The password for SMTP authentication. For services like Gmail, use an app-specific password. | +| SMTP_FROM | No | Not set | The "from" email address that will appear in sent emails. This should be a valid email address. | + +## Proxy Configuration + +If your Karakeep instance needs to connect through a proxy server, you can configure the following settings: + +| Name | Required | Default | Description | +| ------------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------- | +| CRAWLER_HTTP_PROXY | No | Not set | HTTP proxy server URL for outgoing HTTP requests (e.g., `http://proxy.example.com:8080`) | +| CRAWLER_HTTPS_PROXY | No | Not set | HTTPS proxy server URL for outgoing HTTPS requests (e.g., `http://proxy.example.com:8080`) | +| CRAWLER_NO_PROXY | No | Not set | Comma-separated list of hostnames/IPs that should bypass the proxy (e.g., `localhost,127.0.0.1,.local`) | + +:::info +These proxy settings will be used by the crawler and other components that make outgoing HTTP requests. +::: diff --git a/docs/versioned_docs/version-v0.27.0/04-screenshots.md b/docs/versioned_docs/version-v0.27.0/04-screenshots.md new file mode 100644 index 00000000..07830566 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/04-screenshots.md @@ -0,0 +1,34 @@ +# Screenshots + +## Homepage + +![Homepage](/img/screenshots/homepage.png) + +## Homepage (Dark Mode) + +![Homepage](/img/screenshots/homepage-dark.png) + +## Tags + +![All Tags](/img/screenshots/all-tags.png) + +## Lists + +![All Lists](/img/screenshots/all-lists.png) + +## Bookmark Preview + +![Bookmark Preview](/img/screenshots/bookmark-preview.png) + +## Settings + +![Settings](/img/screenshots/settings.png) + +## Admin Panel + +![Ammin](/img/screenshots/admin.png) + + +## iOS Sharing + + diff --git a/docs/versioned_docs/version-v0.27.0/05-quick-sharing.md b/docs/versioned_docs/version-v0.27.0/05-quick-sharing.md new file mode 100644 index 00000000..254bec84 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/05-quick-sharing.md @@ -0,0 +1,21 @@ +# Quick Sharing Extensions + +The whole point of Karakeep is making it easy to hoard the content. That's why there are a couple of + +## Mobile Apps + +mobile screenshot + + +- **iOS app**: [App Store Link](https://apps.apple.com/us/app/karakeep-app/id6479258022). +- **Android App**: [Play Store link](https://play.google.com/store/apps/details?id=app.hoarder.hoardermobile&pcampaignid=web_share). + +## Browser Extensions + +mobile screenshot + +- **Chrome extension**: [here](https://chromewebstore.google.com/detail/karakeep/kgcjekpmcjjogibpjebkhaanilehneje). +- **Firefox addon**: [here](https://addons.mozilla.org/en-US/firefox/addon/karakeep/). + +- ## Community Extensions +- **Safari extension**: [App Store Link](https://apps.apple.com/us/app/karakeeper-bookmarker/id6746722790). For macOS and iOS to allow a simple way to add your bookmarks to your self hosted karakeep instance. diff --git a/docs/versioned_docs/version-v0.27.0/06-openai.md b/docs/versioned_docs/version-v0.27.0/06-openai.md new file mode 100644 index 00000000..32218da8 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/06-openai.md @@ -0,0 +1,11 @@ +# OpenAI Costs + +This service uses OpenAI for automatic tagging. This means that you'll incur some costs if automatic tagging is enabled. There are two type of inferences that we do: + +## Text Tagging + +For text tagging, we use the `gpt-4.1-mini` model. This model is [extremely cheap](https://openai.com/api/pricing). Cost per inference varies depending on the content size per article. Though, roughly, You'll be able to generate tags for almost 3000+ bookmarks for less than $1. + +## Image Tagging + +For image uploads, we use the `gpt-4o-mini` model for extracting tags from the image. You can learn more about the costs of using this model [here](https://platform.openai.com/docs/guides/images?api-mode=chat#calculating-costs). To lower the costs, we're using the low resolution mode (fixed number of tokens regardless of image size). You'll be able to run inference for 1000+ images for less than a $1. diff --git a/docs/versioned_docs/version-v0.27.0/07-development/01-setup.md b/docs/versioned_docs/version-v0.27.0/07-development/01-setup.md new file mode 100644 index 00000000..6072a377 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/07-development/01-setup.md @@ -0,0 +1,178 @@ +# Setup + +## Quick Start + +For the fastest way to get started with development, use the one-command setup script: + +```bash +./start-dev.sh +``` + +This script will automatically: +- Start Meilisearch in Docker (on port 7700) +- Start headless Chrome in Docker (on port 9222) +- Install dependencies with `pnpm install` if needed +- Start both the web app and workers in parallel +- Provide cleanup when you stop with Ctrl+C + +**Prerequisites:** +- Docker installed and running +- pnpm installed (see manual setup below for installation instructions) + +The script will output the running services: +- Web app: http://localhost:3000 +- Meilisearch: http://localhost:7700 +- Chrome debugger: http://localhost:9222 + +Press Ctrl+C to stop all services and clean up Docker containers. + +## Manual Setup + +Karakeep uses `node` version 22. To install it, you can use `nvm` [^1] + +``` +$ nvm install 22 +``` + +Verify node version using this command: +``` +$ node --version +v22.14.0 +``` + +Karakeep also makes use of `corepack`[^2]. If you have `node` installed, then `corepack` should already be +installed on your machine, and you don't need to do anything. To verify the `corepack` is installed run: + +``` +$ command -v corepack +/home//.nvm/versions/node/v22.14.0/bin/corepack +``` + +To enable `corepack` run the following command: + +``` +$ corepack enable +``` + +Then, from the root of the repository, install the packages and dependencies using: + +``` +$ pnpm install +``` + +Output of a successful `pnpm install` run should look something like: + +``` +Scope: all 20 workspace projects +Lockfile is up to date, resolution step is skipped +Packages: +3129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Progress: resolved 0, reused 2699, downloaded 0, added 3129, done + +devDependencies: ++ @karakeep/prettier-config 0.1.0 <- tooling/prettier + +. prepare$ husky +└─ Done in 45ms +Done in 5.5s +``` + +You can now continue with the rest of this documentation. + +### First Setup + +- You'll need to prepare the environment variables for the dev env. +- Easiest would be to set it up once in the root of the repo and then symlink it in each app directory (e.g. `/apps/web`, `/apps/workers`) and also `/packages/db`. +- Start by copying the template by `cp .env.sample .env`. +- The most important env variables to set are: + - `DATA_DIR`: Where the database and assets will be stored. This is the only required env variable. You can use an absolute path so that all apps point to the same dir. + - `NEXTAUTH_SECRET`: Random string used to sign the JWT tokens. Generate one with `openssl rand -base64 36`. Logging in will not work if this is missing! + - `MEILI_ADDR`: If not set, search will be disabled. You can set it to `http://127.0.0.1:7700` if you run meilisearch using the command below. + - `OPENAI_API_KEY`: If you want to enable auto tag inference in the dev env. +- run `pnpm run db:migrate` in the root of the repo to set up the database. + +### Dependencies + +#### Meilisearch + +Meilisearch is the provider for the full text search (and at some point embeddings search too). You can get it running with `docker run -p 7700:7700 getmeili/meilisearch:v1.13.3`. + +Mount persistent volume if you want to keep index data across restarts. You can trigger a re-index for the entire items collection in the admin panel in the web app. + +#### Chrome + +The worker app will automatically start headless chrome on startup for crawling pages. You don't need to do anything there. + +### Web App + +- Run `pnpm web` in the root of the repo. +- Go to `http://localhost:3000`. + +> NOTE: The web app kinda works without any dependencies. However, search won't work unless meilisearch is running. Also, new items added won't get crawled/indexed unless workers are running. + +### Workers + +- Run `pnpm workers` in the root of the repo. + +### Mobile App (iOS & Android) + +#### Prerequisites + +To build and run the mobile app locally, you'll need: + +- **For iOS development**: + - macOS computer + - Xcode installed from the App Store + - iOS Simulator (comes with Xcode) + +- **For Android development**: + - Android Studio installed + - Android SDK configured + - Android Emulator or physical device + +For detailed setup instructions, refer to the [Expo documentation](https://docs.expo.dev/guides/local-app-development/). + +#### Running the app + +- `cd apps/mobile` +- `pnpm exec expo prebuild --no-install` to build the app. + +**For iOS:** +- `pnpm exec expo run:ios` +- The app will be installed and started in the simulator. + +**Troubleshooting iOS Setup:** +If you encounter an error like `xcrun: error: SDK "iphoneos" cannot be located`, you may need to set the correct Xcode developer directory: +```bash +sudo xcode-select -s /Applications/Xcode.app/Contents/Developer +``` + +**For Android:** +- Start the Android emulator or connect a physical device. +- `pnpm exec expo run:android` +- The app will be installed and started on the emulator/device. + +Changing the code will hot reload the app. However, installing new packages requires restarting the expo server. + +### Browser Extension + +- `cd apps/browser-extension` +- `pnpm dev` +- This will generate a `dist` package +- Go to extension settings in chrome and enable developer mode. +- Press `Load unpacked` and point it to the `dist` directory. +- The plugin will pop up in the plugin list. + +In dev mode, opening and closing the plugin menu should reload the code. + + +## Docker Dev Env + +If the manual setup is too much hassle for you. You can use a docker based dev environment by running `docker compose -f docker/docker-compose.dev.yml up` in the root of the repo. This setup wasn't super reliable for me though. + + +[^1]: [nvm](https://github.com/nvm-sh/nvm) is a node version manager. You can install it following [these +instructions](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating). + +[^2]: [corepack](https://nodejs.org/api/corepack.html) is an experimental tool to help with managing versions of your +package managers. diff --git a/docs/versioned_docs/version-v0.27.0/07-development/02-directories.md b/docs/versioned_docs/version-v0.27.0/07-development/02-directories.md new file mode 100644 index 00000000..712e86a1 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/07-development/02-directories.md @@ -0,0 +1,28 @@ +# Directory Structure + +## Apps + +| Directory | Description | +| ------------------------ | ------------------------------------------------------ | +| `apps/web` | The main web app | +| `apps/workers` | The background workers logic | +| `apps/mobile` | The react native based mobile app | +| `apps/browser-extension` | The browser extension | +| `apps/landing` | The landing page of [karakeep.app](https://karakeep.app) | + +## Shared Packages + +| Directory | Description | +| ----------------- | ---------------------------------------------------------------------------- | +| `packages/db` | The database schema and migrations | +| `packages/trpc` | Where most of the business logic lies built as TRPC routes | +| `packages/shared` | Some shared code between the different apps (e.g. loggers, configs, assetdb) | + +## Toolings + +| Directory | Description | +| -------------------- | ----------------------- | +| `tooling/typescript` | The shared tsconfigs | +| `tooling/eslint` | ESlint configs | +| `tooling/prettier` | Prettier configs | +| `tooling/tailwind` | Shared tailwind configs | diff --git a/docs/versioned_docs/version-v0.27.0/07-development/03-database.md b/docs/versioned_docs/version-v0.27.0/07-development/03-database.md new file mode 100644 index 00000000..d7a15b62 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/07-development/03-database.md @@ -0,0 +1,10 @@ +# Database Migrations + +- The database schema lives in `packages/db/schema.ts`. +- Changing the schema, requires a migration. +- You can generate the migration by running `pnpm run db:generate --name description_of_schema_change` in the root dir. +- You can then apply the migration by running `pnpm run db:migrate`. + +## Drizzle Studio + +You can start the drizzle studio by running `pnpm run db:studio` in the root of the repo. diff --git a/docs/versioned_docs/version-v0.27.0/07-development/04-architecture.md b/docs/versioned_docs/version-v0.27.0/07-development/04-architecture.md new file mode 100644 index 00000000..5a864034 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/07-development/04-architecture.md @@ -0,0 +1,9 @@ +# Architecture + +![Architecture Diagram](/img/architecture/arch.png) + +- Webapp: NextJS based using sqlite for data storage. +- Workers: Consume the jobs from sqlite based job queue and executes them, there are three job types: + 1. Crawling: Fetches the content of links using a headless chrome browser running in the workers container. + 2. OpenAI: Uses OpenAI APIs to infer the tags of the content. + 3. Indexing: Indexes the content in meilisearch for faster retrieval during search. diff --git a/docs/versioned_docs/version-v0.27.0/07-development/_category_.json b/docs/versioned_docs/version-v0.27.0/07-development/_category_.json new file mode 100644 index 00000000..73dd67ec --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/07-development/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Development", +} diff --git a/docs/versioned_docs/version-v0.27.0/08-security-considerations.md b/docs/versioned_docs/version-v0.27.0/08-security-considerations.md new file mode 100644 index 00000000..5a295526 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/08-security-considerations.md @@ -0,0 +1,14 @@ +# Security Considerations + +If you're going to give app access to untrusted users, there's some security considerations that you'll need to be aware of given how the crawler works. The crawler is basically running a browser to fetch the content of the bookmarks. Any untrusted user can submit bookmarks to be crawled from your server and they'll be able to see the crawling result. This can be abused in multiple ways: + +1. Untrusted users can submit crawl requests to websites that you don't want to be coming out of your IPs. +2. Crawling user controlled websites can expose your origin IP (and location) even if your service is hosted behind cloudflare for example. +3. The crawling requests will be coming out from your own network, which untrusted users can leverage to crawl internal non-internet exposed endpoints. + +To mitigate those risks, you can do one of the following: + +1. Limit access to trusted users +2. Let the browser traffic go through some VPN with restricted network policies. +3. Host the browser container outside of your network. +4. Use a hosted browser as a service (e.g. [browserless](https://browserless.io)). Note: I've never used them before. diff --git a/docs/versioned_docs/version-v0.27.0/09-command-line.md b/docs/versioned_docs/version-v0.27.0/09-command-line.md new file mode 100644 index 00000000..c8b00696 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/09-command-line.md @@ -0,0 +1,114 @@ +# Command Line Tool (CLI) + +Karakeep comes with a simple CLI for those users who want to do more advanced manipulation. + +## Features + +- Manipulate bookmarks, lists and tags +- Mass import/export of bookmarks + +## Installation (NPM) + +``` +npm install -g @karakeep/cli +``` + + +## Installation (Docker) + +``` +docker run --rm ghcr.io/karakeep-app/karakeep-cli:release --help +``` + +## Usage + +``` +karakeep +``` + +``` +Usage: karakeep [options] [command] + +A CLI interface to interact with the karakeep api + +Options: + --api-key the API key to interact with the API (env: KARAKEEP_API_KEY) + --server-addr the address of the server to connect to (env: KARAKEEP_SERVER_ADDR) + -V, --version output the version number + -h, --help display help for command + +Commands: + bookmarks manipulating bookmarks + lists manipulating lists + tags manipulating tags + whoami returns info about the owner of this API key + help [command] display help for command +``` + +And some of the subcommands: + +``` +karakeep bookmarks +``` + +``` +Usage: karakeep bookmarks [options] [command] + +Manipulating bookmarks + +Options: + -h, --help display help for command + +Commands: + add [options] creates a new bookmark + get fetch information about a bookmark + update [options] updates bookmark + list [options] list all bookmarks + delete delete a bookmark + help [command] display help for command + +``` + +``` +karakeep lists +``` + +``` +Usage: karakeep lists [options] [command] + +Manipulating lists + +Options: + -h, --help display help for command + +Commands: + list lists all lists + delete deletes a list + add-bookmark [options] add a bookmark to list + remove-bookmark [options] remove a bookmark from list + help [command] display help for command +``` + +## Obtaining an API Key + +To use the CLI, you'll need to get an API key from your karakeep settings. You can validate that it's working by running: + +``` +karakeep --api-key --server-addr whoami +``` + +For example: + +``` +karakeep --api-key mysupersecretkey --server-addr https://try.karakeep.app whoami +{ + id: 'j29gnbzxxd01q74j2lu88tnb', + name: 'Test User', + email: 'test@gmail.com' +} +``` + + +## Other clients + +There also exists a **non-official**, community-maintained, python package called [karakeep-python-api](https://github.com/thiswillbeyourgithub/karakeep_python_api) that can be accessed from the CLI, but is **not** official. diff --git a/docs/versioned_docs/version-v0.27.0/09-mcp.md b/docs/versioned_docs/version-v0.27.0/09-mcp.md new file mode 100644 index 00000000..514332de --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/09-mcp.md @@ -0,0 +1,65 @@ +# Model Context Protocol Server (MCP) + +Karakeep comes with a Model Context Protocol server that can be used to interact with it through LLMs. + +## Supported Tools + +- Searching bookmarks +- Adding and removing bookmarks from lists +- Attaching and detaching tags to bookmarks +- Creating new lists +- Creating text and URL bookmarks + + +## Usage with Claude Desktop + +From NPM: + +```json +{ + "mcpServers": { + "karakeep": { + "command": "npx", + "args": [ + "@karakeep/mcp" + ], + "env": { + "KARAKEEP_API_ADDR": "https://", + "KARAKEEP_API_KEY": "" + } + } + } +} +``` + +From Docker: + +```json +{ + "mcpServers": { + "karakeep": { + "command": "docker", + "args": [ + "run", + "-e", + "KARAKEEP_API_ADDR=https://", + "-e", + "KARAKEEP_API_KEY=", + "ghcr.io/karakeep-app/karakeep-mcp:latest" + ] + } + } +} +``` + + +### Demo + +#### Search +![mcp-1](/img/mcp-1.gif) + +#### Adding Text Bookmarks +![mcp-2](/img/mcp-2.gif) + +#### Adding URL Bookmarks +![mcp-2](/img/mcp-3.gif) diff --git a/docs/versioned_docs/version-v0.27.0/10-import.md b/docs/versioned_docs/version-v0.27.0/10-import.md new file mode 100644 index 00000000..8ca8b1f9 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/10-import.md @@ -0,0 +1,49 @@ +# Importing Bookmarks + + +Karakeep supports importing bookmarks using the Netscape HTML Format, Pocket's new CSV format & Omnivore's JSONs. Titles, tags and addition date will be preserved during the import. An automatically created list will contain all the imported bookmarks. + +:::info +All the URLs in the bookmarks file will be added automatically, you will not be able to pick and choose which bookmarks to import! +::: + +## Import from Chrome + +- Open Chrome and go to `chrome://bookmarks` +- Click on the three dots on the top right corner and choose `Export bookmarks` +- This will download an html file with all of your bookmarks. +- To import the bookmark file, go to the settings and click "Import Bookmarks from HTML file". + +## Import from Firefox +- Open Firefox and click on the menu button (☰) in the top right corner. +- Navigate to Bookmarks > Manage bookmarks (or press Ctrl + Shift + O / Cmd + Shift + O to open the Bookmarks Library). +- In the Bookmarks Library, click the Import and Backup button at the top. Select Export Bookmarks to HTML... to save your bookmarks as an HTML file. +- To import a bookmark file, go back to the Import and Backup menu, then select Import Bookmarks from HTML... and choose your saved HTML file. + +## Import from Pocket + +- Go to the [Pocket export page](https://getpocket.com/export) and follow the instructions to export your bookmarks. +- Pocket after a couple of minutes will mail you a zip file with all the bookmarks. +- Unzip the file and you'll get a CSV file. +- To import the bookmark file, go to the settings and click "Import Bookmarks from Pocket export". + +## Import from Omnivore + +- Follow Omnivore's [documentation](https://docs.omnivore.app/using/exporting.html) to export your bookmarks. +- This will give you a zip file with all your data. +- The zip file contains a lot of JSONs in the format `metadata_*.json`. You can either import every JSON file manually, or merge the JSONs into a single JSON file and import that. +- To merge the JSONs into a single JSON file, you can use the following command in the unzipped directory: `jq -r '.[]' metadata_*.json | jq -s > omnivore.json` and then import the `omnivore.json` file. You'll need to have the [jq](https://github.com/jqlang/jq) tool installed. + +## Import using the CLI + +:::warning +Importing bookmarks using the CLI requires some technical knowledge and might not be very straightforward for non-technical users. Don't hesitate to ask questions in github discussions or discord though. +::: + +If you can get your bookmarks in a text file with one link per line, you can use the following command to import them using the [karakeep cli](https://docs.karakeep.app/command-line): + +``` +while IFS= read -r url; do + karakeep --api-key "" --server-addr "" bookmarks add --link "$url" +done < all_links.txt +``` diff --git a/docs/versioned_docs/version-v0.27.0/11-FAQ.md b/docs/versioned_docs/version-v0.27.0/11-FAQ.md new file mode 100644 index 00000000..e6f59801 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/11-FAQ.md @@ -0,0 +1,60 @@ +# Frequently Asked Questions (FAQ) + +## User Management + +### Lost password + +#### If you are not an administrator + +Administrators can reset the password of any user. Contact an administrator to reset the password for you. + +- Navigate to the `Admin Settings` page +- Find the user in the `Users List` +- In the `Actions` column, there is a button to reset the password +- Enter a new password and press `Reset` +- The new password is now set +- If required, you can change your password again (so the admin does not know your password) in the `User Settings` + +#### If you are an administrator + +If you are an administrator and lost your password, you have to reset the password in the database. + +To reset the password: + +- Acquire some kind of tools that helps you to connect to the database: + - `sqlite3` on Linux: run `apt-get install sqlite3` (depending on your package manager) + - e.g. `dbeaver` on Windows +- Shut down Karakeep +- Connect to the `db.db` database, which is located in the `data` directory you have mounted to your docker container: + - by e.g. running `sqlite3 db.db` (in your `data` directory) + - or going through e.g. the `dbeaver` UI to locate the file in the data directory and connecting to it +- Update the password in the database by running: + - `update user set password='$2a$10$5u40XUq/cD/TmLdCOyZ82ePENE6hpkbodJhsp7.e/BgZssUO5DDTa', salt='' where email='';` + - (don't forget to put your email address into the command) +- The new password for your user is now `adminadmin`. +- Start Karakeep again +- Log in with your email address and the password `adminadmin` and change the password to whatever you want in the `User Settings` + +### Adding another administrator + +By default, the first user to sign up gets promoted to administrator automatically. + +In case you want to grant those permissions to another user: + +- Navigate to the `Admin Settings` page +- Find the user in the `Users List` +- In the `Actions` column, there is a button to change the Role +- Change the Role to `Admin` +- Press `Change` +- The new administrator has to log out and log in again to get the new role assigned + +### Adding new users, when signups are disabled + +Administrators can create new accounts any time: + +- Navigate to the `Admin Settings` page +- Go to the `Users List` +- Press the `Create User` Button. +- Enter the information for the user +- Press `create` +- The new user can now log in diff --git a/docs/versioned_docs/version-v0.27.0/12-troubleshooting.md b/docs/versioned_docs/version-v0.27.0/12-troubleshooting.md new file mode 100644 index 00000000..4072442b --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/12-troubleshooting.md @@ -0,0 +1,46 @@ +# Troubleshooting + +## SqliteError: no such table: user + +This usually means that there's something wrong with the database setup (more concretely, it means that the database is not initialized). This can be caused by multiple problems: +1. **Wiped DATA_DIR:** Your `DATA_DIR` got wiped (or the backing storage dir changed). If you did this intentionally, restart the container so that it can re-initalize the database. +2. **Missing DATA_DIR**: You're not using the default docker compose file, and you forgot to configure the `DATA_DIR` env var. This will result into the database getting set up in a different directory than the one used by the service. + +## Chrome Failed to Read DnsConfig + +If you see this error in the logs of the chrome container, it's a benign error and you can safely ignore it. Whatever problems you're having, is unrelated to this error. + +## AI Tagging not working (when using OpenAI) + +Check the logs of the container and this will usually tell you what's wrong. Common problems are: +1. Typo in the env variable `OPENAI_API_KEY` name resulting into logs saying something like "skipping inference as it's not configured". +2. You forgot to call `docker compose up` after configuring open ai. +3. OpenAI requires pre-charging the account with credits before using it, otherwise you'll get an error like "insufficient funds". + +## AI Tagging not working (when using Ollama) + +Check the logs of the container and this will usually tell you what's wrong. Common problems are: +1. Typo in the env variable `OLLAMA_BASE_URL` name resulting into logs saying something like "skipping inference as it's not configured". +2. You forgot to call `docker compose up` after configuring ollama. +3. You didn't change the `INFERENCE_TEXT_MODEL` env variable, resulting into karakeep attempting to use gpt models with ollama which won't work. +4. Ollama server is not reachable by the karakeep container. This can be caused by: + 1. Ollama server being in a different docker network than the karakeep container. + 2. You're using `localhost` as the `OLLAMA_BASE_URL` instead of the actual address of the ollama server. `localhost` points to the container itself, not the docker host. Check this [stackoverflow answer](https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach) to find how to correctly point to the docker host address instead. + +## Crawling not working + +Check the logs of the container and this will usually tell you what's wrong. Common problems are: +1. You changed the name of the chrome container but didn't change the `BROWSER_WEB_URL` env variable. + +## Upgrading Meilisearch - Migrating the Meilisearch db version + +[Meilisearch](https://www.meilisearch.com/) is the database used by karakeep for searching in your bookmarks. The version used by karakeep is `1.13.3` and it is advised not to upgrade it without good reasons. If you do, you might see errors like `Your database version (1.11.1) is incompatible with your current engine version (1.13.3). To migrate data between Meilisearch versions, please follow our guide on https://www.meilisearch.com/docs/learn/update_and_migration/updating.`. + +Luckily we can easily workaround this: +1. Stop the Meilisearch container. +2. Inside the Meilisearch volume bound to `/meili_data`, erase/rename the folder called `data.ms`. +3. Launch Meilisearch again. +4. Login to karakeep as administrator and go to (as of v0.24.1) `Admin Settings > Background Jobs` then click on `Reindex All Bookmarks`. +5. When the reindexing has finished, Meilisearch should be working as usual. + +If you run into issues, the official documentation can be found [there](https://www.meilisearch.com/docs/learn/update_and_migration/updating). diff --git a/docs/versioned_docs/version-v0.27.0/13-community-projects.md b/docs/versioned_docs/version-v0.27.0/13-community-projects.md new file mode 100644 index 00000000..f7a8df42 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/13-community-projects.md @@ -0,0 +1,72 @@ +# Community Projects + +This page lists community projects that are built around Karakeep, but not officially supported by the development team. + +:::warning +This list comes with no guarantees about security, performance, reliability, or accuracy. Use at your own risk. +::: + +### Raycast Extension + +_By [@luolei](https://github.com/foru17)._ + +A user-friendly Raycast extension that seamlessly integrates with Karakeep, bringing powerful bookmark management to your fingertips. Quickly save, search, and organize your bookmarks, texts, and images—all through Raycast's intuitive interface. + +Get it [here](https://www.raycast.com/luolei/hoarder). + +### Alfred Workflow + +_By [@yinan-c](https://github.com/yinan-c)_ + +An Alfred workflow to quickly hoard stuff or access your hoarded bookmarks! + +Get it [here](https://www.alfredforum.com/topic/22528-hoarder-workflow-for-self-hosted-bookmark-management/). + +### Obsidian Plugin + +_By [@jhofker](https://github.com/jhofker)_ + +An Obsidian plugin that syncs your Karakeep bookmarks with Obsidian, creating markdown notes for each bookmark in a designated folder. + +Get it [here](https://github.com/jhofker/obsidian-hoarder/), or install it directly from Obsidian's community plugin store ([link](https://obsidian.md/plugins?id=hoarder-sync)). + +### Telegram Bot + +_By [@Madh93](https://github.com/Madh93)_ + +A Telegram Bot for saving bookmarks to Karakeep directly through Telegram. + +Get it [here](https://github.com/Madh93/karakeepbot). + +### Hoarder's Pipette + +_By [@DanSnow](https://github.com/DanSnow)_ + +A chrome extension that injects karakeep's bookmarks into your search results. + +Get it [here](https://dansnow.github.io/hoarder-pipette/guides/installation/). + +### Karakeep-Python-API + +_By [@thiswillbeyourgithub](https://github.com/thiswillbeyourgithub/)_ + +A python package to simplify access to the karakeep API. Can be used as a library or from the CLI. Aims for feature completeness and high test coverage but do check its feature matrix before relying too much on it. + +Its repository also hosts the [Community Script](https://github.com/thiswillbeyourgithub/karakeep_python_api/tree/main/community_scripts), for example: + +| Community Script | Description | Documentation | +|----------------|-------------|---------------| +| **Karakeep-Time-Tagger** | Automatically adds time-to-read tags (`0-5m`, `5-10m`, etc.) to bookmarks based on content length analysis. Includes systemd service and timer files for automated periodic execution. | [`Link`](https://github.com/thiswillbeyourgithub/karakeep_python_api/tree/main/community_scripts/karakeep-time-tagger) | +| **Karakeep-List-To-Tag** | Converts a Karakeep list into tags by adding a specified tag to all bookmarks within that list. | [`Link`](https://github.com/thiswillbeyourgithub/karakeep_python_api/tree/main/community_scripts/karakeep-list-to-tag) | +| **Omnivore2Karakeep-Highlights** | Imports highlights from Omnivore export data to Karakeep, with intelligent position detection and bookmark matching. Supports dry-run mode for testing. | [`Link`](https://github.com/thiswillbeyourgithub/karakeep_python_api/tree/main/community_scripts/omnivore2karakeep-highlights) | + + +Get it [here](https://github.com/thiswillbeyourgithub/karakeep_python_api). + +### FreshRSS_to_Karakeep + +_By [@thiswillbeyourgithub](https://github.com/thiswillbeyourgithub/)_ + +A python script to automatically create Karakeep bookmarks from your [FreshRSS](https://github.com/FreshRSS/FreshRSS) *favourites/saved* RSS item. Made to be called periodically. Based on the community project `Karakeep-Python-API` above, by the same author. + +Get it [here](https://github.com/thiswillbeyourgithub/freshrss_to_karakeep). diff --git a/docs/versioned_docs/version-v0.27.0/14-guides/01-legacy-container-upgrade.md b/docs/versioned_docs/version-v0.27.0/14-guides/01-legacy-container-upgrade.md new file mode 100644 index 00000000..d95c1c1e --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/14-guides/01-legacy-container-upgrade.md @@ -0,0 +1,66 @@ +# Legacy Container Upgrade + +Karakeep's 0.16 release consolidated the web and worker containers into a single container and also dropped the need for the redis container. The legacy containers will stop being supported soon, to upgrade to the new container do the following: + +1. Remove the redis container and its volume if it had one. +2. Move the environment variables that you've set exclusively to the `workers` container to the `web` container. +3. Delete the `workers` container. +4. Rename the web container image from `hoarder-app/hoarder-web` to `hoarder-app/hoarder`. + +```diff +diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml +index cdfc908..6297563 100644 +--- a/docker/docker-compose.yml ++++ b/docker/docker-compose.yml +@@ -1,7 +1,7 @@ + version: "3.8" + services: + web: +- image: ghcr.io/hoarder-app/hoarder-web:${KARAKEEP_VERSION:-release} ++ image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release} + restart: unless-stopped + volumes: + - data:/data +@@ -10,14 +10,10 @@ services: + env_file: + - .env + environment: +- REDIS_HOST: redis + MEILI_ADDR: http://meilisearch:7700 ++ BROWSER_WEB_URL: http://chrome:9222 ++ # OPENAI_API_KEY: ... + DATA_DIR: /data +- redis: +- image: redis:7.2-alpine +- restart: unless-stopped +- volumes: +- - redis:/data + chrome: + image: gcr.io/zenika-hub/alpine-chrome:123 + restart: unless-stopped +@@ -37,24 +33,7 @@ services: + MEILI_NO_ANALYTICS: "true" + volumes: + - meilisearch:/meili_data +- workers: +- image: ghcr.io/hoarder-app/hoarder-workers:${KARAKEEP_VERSION:-release} +- restart: unless-stopped +- volumes: +- - data:/data +- env_file: +- - .env +- environment: +- REDIS_HOST: redis +- MEILI_ADDR: http://meilisearch:7700 +- BROWSER_WEB_URL: http://chrome:9222 +- DATA_DIR: /data +- # OPENAI_API_KEY: ... +- depends_on: +- web: +- condition: service_started + + volumes: +- redis: + meilisearch: + data: +``` diff --git a/docs/versioned_docs/version-v0.27.0/14-guides/02-search-query-language.md b/docs/versioned_docs/version-v0.27.0/14-guides/02-search-query-language.md new file mode 100644 index 00000000..55e32b98 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/14-guides/02-search-query-language.md @@ -0,0 +1,71 @@ +# Search Query Language + +Karakeep provides a search query language to filter and find bookmarks. Here are all the supported qualifiers and how to use them: + +## Basic Syntax + +- Use spaces to separate multiple conditions (implicit AND) +- Use `and`/`or` keywords for explicit boolean logic +- Prefix qualifiers with `-` to negate them +- Use parentheses `()` for grouping conditions (note that groups can't be negated) + +## Qualifiers + +Here's a comprehensive table of all supported qualifiers: + +| Qualifier | Description | Example Usage | +| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| `is:fav` | Favorited bookmarks | `is:fav` | +| `is:archived` | Archived bookmarks | `-is:archived` | +| `is:tagged` | Bookmarks that has one or more tags | `is:tagged` | +| `is:inlist` | Bookmarks that are in one or more lists | `is:inlist` | +| `is:link`, `is:text`, `is:media` | Bookmarks that are of type link, text or media | `is:link` | +| `url:` | Match bookmarks with URL substring | `url:example.com` | +| `#` | Match bookmarks with specific tag | `#important` | +| | Supports quoted strings for tags with spaces | `#"work in progress"` | +| `list:` | Match bookmarks in specific list | `list:reading` | +| | Supports quoted strings for list names with spaces | `list:"to review"` | +| `after:` | Bookmarks created on or after date (YYYY-MM-DD) | `after:2023-01-01` | +| `before:` | Bookmarks created on or before date (YYYY-MM-DD) | `before:2023-12-31` | +| `feed:` | Bookmarks imported from a particular rss feed | `feed:Hackernews` | +| `age:` | Match bookmarks based on how long ago they were created. Use `<` or `>` to indicate the maximum / minimum age of the bookmarks. Supported units: `d` (days), `w` (weeks), `m` (months), `y` (years). | `age:<1d` `age:>2w` `age:<6m` `age:>3y` | + +### Examples + +```plaintext +# Find favorited bookmarks from 2023 that are tagged "important" +is:fav after:2023-01-01 before:2023-12-31 #important + +# Find archived bookmarks that are either in "reading" list or tagged "work" +is:archived and (list:reading or #work) + +# Find bookmarks that are not tagged or not in any list +-is:tagged or -is:inlist +``` + +## Combining Conditions + +You can combine multiple conditions using boolean logic: + +```plaintext +# Find favorited bookmarks from 2023 that are tagged "important" +is:fav after:2023-01-01 before:2023-12-31 #important + +# Find archived bookmarks that are either in "reading" list or tagged "work" +is:archived and (list:reading or #work) + +# Find bookmarks that are not favorited and not archived +-is:fav -is:archived +``` + +## Text Search + +Any text not part of a qualifier will be treated as a full-text search: + +```plaintext +# Search for "machine learning" in bookmark content +machine learning + +# Combine text search with qualifiers +machine learning is:fav +``` diff --git a/docs/versioned_docs/version-v0.27.0/14-guides/03-singlefile.md b/docs/versioned_docs/version-v0.27.0/14-guides/03-singlefile.md new file mode 100644 index 00000000..c0f4e174 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/14-guides/03-singlefile.md @@ -0,0 +1,46 @@ +# Using Karakeep with SingleFile Extension + +Karakeep supports being a destination for the [SingleFile extension](https://github.com/gildas-lormeau/SingleFile). This has the benefit of allowing you to use the singlefile extension to hoard links as you're seeing them in the browser. This is perfect for websites that don't like to get crawled, has annoying cookie banner or require authentication. + +## Setup + +1. Install the [SingleFile extension](https://github.com/gildas-lormeau/SingleFile). +2. In the extension settings, select `Destinations`. +3. Select `upload to a REST Form API`. +4. In the URL, insert the address: `https://YOUR_SERVER_ADDRESS/api/v1/bookmarks/singlefile`. +5. In the `authorization token` field, paste an API key that you can get from your karakeep settings. +6. Set `data field name` to `file`. +7. Set `URL field name` to `url`. +8. (Optional) Add `&ifexists=MODE` to the URL where MODE is one of `skip`, `overwrite`, `overwrite-recrawl`, `append`, or `append-recrawl`. See "Handling Existing Bookmarks" section below for details. + +Now, go to any page and click the singlefile extension icon. Once it's done with the upload, the bookmark should show up in your karakeep instance. Note that the singlefile extension doesn't show any progress on the upload. Given that archives are typically large, it might take 30+ seconds until the upload is done and starts showing up in Karakeep. + +## Handling Existing Bookmarks + +When uploading a page that already exists in your archive (same URL), you can control the behavior by setting the `ifexists` query parameter in the upload URL. The available modes are: + +- `skip` (default): If the bookmark already exists, skip creating a new one +- `overwrite`: Replace existing precrawled archive (only the most recent archive is kept) +- `overwrite-recrawl`: Replace existing archive and queue a recrawl to update content +- `append`: Add new archive version alongside existing ones +- `append-recrawl`: Add new archive and queue a recrawl + +To use these modes, append `?ifexists=MODE` to your upload URL, replacing `MODE` with your desired behavior. + +For example: +`https://YOUR_SERVER_ADDRESS/api/v1/bookmarks/singlefile?ifexists=overwrite` + + +## Recommended settings + +In the singlefile extension, you probably will want to change the following settings for better experience: +* Stylesheets > compress CSS content: on +* Stylesheets > group duplicate stylesheets together: on +* HTML content > remove frames: on + +Also, you most likely will want to change the default `MAX_ASSET_SIZE_MB` in karakeep to something higher, for example `100`. + +:::info +Currently, we don't support screenshots for singlefile uploads, but this will change in the future. +::: + diff --git a/docs/versioned_docs/version-v0.27.0/14-guides/04-hoarder-to-karakeep-migration.md b/docs/versioned_docs/version-v0.27.0/14-guides/04-hoarder-to-karakeep-migration.md new file mode 100644 index 00000000..289a091c --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/14-guides/04-hoarder-to-karakeep-migration.md @@ -0,0 +1,28 @@ +# Hoarder to Karakeep Migration + +Hoarder is rebranding to Karakeep. Due to github limitations, the old docker image might not be getting new updates after the rebranding. You might need to update your docker image to point to the new karakeep image instead by applying the following change in the docker compose file. + +```diff +diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml +index cdfc908..6297563 100644 +--- a/docker/docker-compose.yml ++++ b/docker/docker-compose.yml +@@ -1,7 +1,7 @@ + version: "3.8" + services: + web: +- image: ghcr.io/hoarder-app/hoarder:${HOARDER_VERSION:-release} ++ image: ghcr.io/karakeep-app/karakeep:${HOARDER_VERSION:-release} +``` + +You can also change the `HOARDER_VERSION` environment variable but if you do so remember to change it in the `.env` file as well. + +## Migrating a Baremetal Installation + +If you previously used the [Debian/Ubuntu install script](https://docs.karakeep.app/Installation/debuntu) to install Hoarder, there is an option to migrate your installation to Karakeep. + +```bash +bash karakeep-linux.sh migrate +``` + +This will migrate your installation with no user input required. After the migration, the script will also check for an update. diff --git a/docs/versioned_docs/version-v0.27.0/14-guides/05-different-ai-providers.md b/docs/versioned_docs/version-v0.27.0/14-guides/05-different-ai-providers.md new file mode 100644 index 00000000..33408c00 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/14-guides/05-different-ai-providers.md @@ -0,0 +1,66 @@ +# Configuring different AI Providers + +Karakeep uses LLM providers for AI tagging and summarization. We support OpenAI-compatible providers and ollama. This guide will show you how to configure different providers. + +## OpenAI + +If you want to use OpenAI itself, you just need to pass in the OPENAI_API_KEY environment variable. + +``` +OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + +# You can change the default models by uncommenting the following lines, and choosing your model. +# INFERENCE_TEXT_MODEL=gpt-4.1-mini +# INFERENCE_IMAGE_MODEL=gpt-4o-mini +``` + +## Ollama + +Ollama is a local LLM provider that you can use to run your own LLM server. You'll need to pass ollama's address to karakeep and you need to ensure that it's accessible from within the karakeep container (e.g. no localhost addresses). + +``` +# MAKE SURE YOU DON'T HAVE OPENAI_API_KEY set, otherwise it takes precedence. + +OLLAMA_BASE_URL=http://ollama.mylab.com:11434 + +# Make sure to pull the models in ollama first. Example models: +INFERENCE_TEXT_MODEL=gemma3 +INFERENCE_IMAGE_MODEL=llava + +# If the model you're using doesn't support structured output, you also need: +# INFERENCE_OUTPUT_SCHEMA=plain +``` + +## Gemini + +Gemini has an OpenAI-compatible API. You need to get an api key from Google AI Studio. + +``` + +OPENAI_BASE_URL=https://generativelanguage.googleapis.com/v1beta +OPENAI_API_KEY=YOUR_API_KEY + +# Example models: +INFERENCE_TEXT_MODEL=gemini-2.0-flash +INFERENCE_IMAGE_MODEL=gemini-2.0-flash +``` + +## OpenRouter + +``` +OPENAI_BASE_URL=https://openrouter.ai/api/v1 +OPENAI_API_KEY=YOUR_API_KEY + +# Example models: +INFERENCE_TEXT_MODEL=meta-llama/llama-4-scout +INFERENCE_IMAGE_MODEL=meta-llama/llama-4-scout +``` + +## Perplexity + +``` +OPENAI_BASE_URL: https://api.perplexity.ai +OPENAI_API_KEY: Your Perplexity API Key +INFERENCE_TEXT_MODEL: sonar-pro +INFERENCE_IMAGE_MODEL: sonar-pro +``` diff --git a/docs/versioned_docs/version-v0.27.0/14-guides/_category_.json b/docs/versioned_docs/version-v0.27.0/14-guides/_category_.json new file mode 100644 index 00000000..117f7f1b --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/14-guides/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "Guides", +} diff --git a/docs/versioned_docs/version-v0.27.0/api/_category_.json b/docs/versioned_docs/version-v0.27.0/api/_category_.json new file mode 100644 index 00000000..49c10f38 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/_category_.json @@ -0,0 +1 @@ +{ "label": "API" } diff --git a/docs/versioned_docs/version-v0.27.0/api/add-a-bookmark-to-a-list.api.mdx b/docs/versioned_docs/version-v0.27.0/api/add-a-bookmark-to-a-list.api.mdx new file mode 100644 index 00000000..a7c43463 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/add-a-bookmark-to-a-list.api.mdx @@ -0,0 +1,71 @@ +--- +id: add-a-bookmark-to-a-list +title: "Add a bookmark to a list" +description: "Add the bookmarks to a list" +sidebar_label: "Add a bookmark to a list" +hide_title: true +hide_table_of_contents: true +api: eJy9VE1v00AQ/SurOYG01C0qovItHJAKCFWQikPkw8SexNvY3u3uuE2w9r+jsU2ctKFcEL7Yu56PN2/eTAcFhdwbx8Y2kMKsKBSXpJbWbmr0m6DYKlSVCQwaGNcB0gV8MYEDZBoC5a03vIN00cGS0JOftVxCushipsGhx5qYfOgNQl5SjZB2wDtHkEJgb5o1aKAt1q6SK0OmqLa7df14d/Xebn++K7fMNr+S7IZ7E8l+XUDU4Om+NZ4KSNm3pKHBWgyqwUCDkZIccglR/7P0H0ZqXoSwnIyOYGTiEZxtAgVB8vb8Ul7HTfhqVW4bpobVm6NuqEcMCouC+tSXp3yFHGX95NJYVivbNgJkjCpe6FxlchSv5C6I6wmC7PKOcmm889aRZzOAzm1Bz2mMGmoKAden/h0xtRgiTPZZlEfOXNpCyGr7rEJZCon0MyTd0NaY7LWZdBPNEUSN/uG31lpfQQodFoWnEGKCziQPF6DhAb3BZTVUMv4eaFxhWzGkUDK7kCYJ+93ZBj1uiNwZOgf6CdfzktQYQdlV36nPo70asECM8WBMvgvBQ+bDYdmzJZmljt5MVNQbgR4/PlpfoyD89GPeU2qalRV3qXqAdHF2fnZ+INY9ntnN9Un8s5trtbL+GLwUGzU4G7jGXhqjrGU94KStw91wFLqbpPa3lTJUzrTlxFVoGkncN68b+7/o5zmAhnQ/2PtYcnswa5mG0gYWp65bYqBbX8Uo1/cteVlT2aSAXieFCfJdQLrCKtALdbz6Ngr4tfoT7vESm10vtKqVE2jY0G5aS7KK/mPWA3ZiFjWUhAX5vvbBYJbn5PjA9dlqEAnvR/Pmdg4a8Fi4T4TaRz8Jq+sGi7ndUBPjHiXLWQDG+As6ID3T +sidebar_class_name: "put api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Add the bookmarks to a list + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/attach-asset.api.mdx b/docs/versioned_docs/version-v0.27.0/api/attach-asset.api.mdx new file mode 100644 index 00000000..a01e6f1c --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/attach-asset.api.mdx @@ -0,0 +1,71 @@ +--- +id: attach-asset +title: "Attach asset" +description: "Attach a new asset to a bookmark" +sidebar_label: "Attach asset" +hide_title: true +hide_table_of_contents: true +api: eJztVUGP0zoQ/ivRnB6S2ewiECi3gkAs7/BWbJ84VDlM42njbWIb29m2RP7vT+Okm5YWBNI7comSyefxfJ+/GfcgyVdO2aCMhgJmIWBVZ5hp2mboPYUsmAyzpTGbFt0GBARceygW8HYMeSgFeKo6p8IeikUPS0JHbtaFGopFGUsBFh22FMj5BPBVTS1C0UPYW4ICfHBKr0EA7bC1DYcUKdns9ut2+/Dmtdl9e1XvQjDVG65AhQQ5VHArIQpw9LVTjiQUwXUkQGPLoOUEEqCYo8VQA1fFK8iHt0buuZZTJeY1HQmQZAEBldGBdGA4WtuoChmeP3hec4GYWT5QFUCAdcaSC4o8/1XynHwUkPabp+gFaXTXsu6N0puPoW3ejaUI8JUj0r42/JFy3B9Hlqg1udsW1wQCVl3T3OGaZq6q1SNHHpUkw7hRqRlnSCVT5XDbkJywnd5os9VQxhPFF8zouP4yxgHhrdF+IP3i+uYHMid1SQ56/1H5d1V+ef3yXNhDc2TahGxlOi3/P2ErIy+IFwW05D0LcP7vOyIpw4RPRNL6UBvJPWp82pZbtYD8IJrP+6mfY56U8Hw25B4Pw6VzDRTQo5SOvI85WpU/3vAJoFO4bAYK4+9BtxV2TYAC6hCsL/I8uP3VBh1uiOwVWgvikmuHDJlZZaGm7O8Rnw21QIzxaC7es7LDzsfT8Ukm3jl5jGE8tRKI7ZJePhjXIlf46cs8ackn9nkaX+8PY3Mw/WTnI6+fWTryPFwZXsTiDcxurq6vro9m7BOt2d3tRRlmd7fZyrhTDVizKNIptpisNU7jw/0ymv8kXT/Z85fuoYFVoF3IbYNK847p8PvRN4unZmOPFCc3wWidUkDNVisW0PdL9PSva2Lk8NeOHF9n5WScZC+pPL9LKFbYePoJh78+j4Z/lv2o3DGIep/82XT8BQI2tD+9umIZBdSEklyqYgCMJ/k8HfCU4Ky1ozismFUV2fBTbHnUhnf/3M/TzBpuyDb1PTjcgkjPVKxJ3JO3U6yHBvW6S3MAhpxsWTx1/HcOT6wuytH3A2JuNqRjfFIn8DcLE+N/AisISA== +sidebar_class_name: "post api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Attach a new asset to a bookmark + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/attach-tags-to-a-bookmark.api.mdx b/docs/versioned_docs/version-v0.27.0/api/attach-tags-to-a-bookmark.api.mdx new file mode 100644 index 00000000..6c1c6968 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/attach-tags-to-a-bookmark.api.mdx @@ -0,0 +1,71 @@ +--- +id: attach-tags-to-a-bookmark +title: "Attach tags to a bookmark" +description: "Attach tags to a bookmark" +sidebar_label: "Attach tags to a bookmark" +hide_title: true +hide_table_of_contents: true +api: eJytVU2P0zAQ/SvRnEAyTUEgUG4FgbQgwQqKOFQ9TJNp420SG3uytET572icr5aWFUL0UCXO83jmzZvnBjLyqdOWtakggQUzpnnEuPMRmwijjTH7Et0eFMgiJCt43S95WCvwlNZO8xGSVQMbQkduUXMOyWrdrhVYdFgSk/MB4NOcSoSkAT5aggQ8O13tQAEdsLSFLGnSWXE47sofd69emsPPF/mB2aSvJAPNATJkcJNBq8DR91o7yiBhV5OCCksBbSaQAi3FWeQcJCvZQZ5fm+wouZxTsMxpqj/QMQMFqamYKhY4WlvoFAUe33nZc6Uws7mjlEGBdcaSY00+fA0cjih0Do+SHlPp/2r3TXbJXht68zGUffFNfqccrboc1sO6t6byXfhn8/l1OgrtOTLbng7KhJ9IZ/7/8TJE/gtu/k0yy0DdBRfjuT0fz+fPLykY5BZVhqOtqavs/xWemuxa1xSU5D3urnb0vIQQYcKv+46XxLnJRPXGh2NF/AnEw1j4uJkmpI2DKGSc3f0wrLUrIIEGs8yR922MVsf3T0HBPTqNm6LvXPe5Y22LdcGQQM5sfRLH7I6zPTrcE9kZWgvqirr6CCIwzin60OOjLhfp2YnPfBFeu5NP3WYkSU6WOgJMXCCAQPUP74wrUTJ8/20ZmJR+fZ7s4O2gqWFUV+PUTcIbh21syboVi9ka2Sf8dcU9nc1n8xMNjpUtbm+uMrG4vYm2xp3TILS1KrSxxKCt3uAe8uqz2M0k1ocNvqOQ6cCxLVBXcm5QQdPLZzW6qoglObPYzlYU5KK3ZAVNs0FPX13RtrL8vSYnt8R60k9gN9NenjNItlh4eiD1R5971T+O/pTsYB3VMci0qOUNFOzpeH4jhI7lhBm5kEUHeNOd9WQpYaYAF/PdqmHHIk3J8oPY9cks3n76shQt9hdPGYYfHP4AFf5DsibUHiQe1hoosNrVwQygiynKxXPh/yb0TrnX6GiaDrE0e6radmSH5V2IadtfmYTHdA== +sidebar_class_name: "post api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Attach tags to a bookmark + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/create-a-new-bookmark.api.mdx b/docs/versioned_docs/version-v0.27.0/api/create-a-new-bookmark.api.mdx new file mode 100644 index 00000000..70e0df7a --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/create-a-new-bookmark.api.mdx @@ -0,0 +1,71 @@ +--- +id: create-a-new-bookmark +title: "Create a new bookmark" +description: "Create a new bookmark" +sidebar_label: "Create a new bookmark" +hide_title: true +hide_table_of_contents: true +api: eJzVWN9v4zYM/lcCPntNOuzJb+lhw7pfV6wd9hD4gbGZWBdb8klyejnD//tASbWd1kmdazFsKFA4EilSn0jqoxrIyKRaVFYoCTF80ISWZjiT9DhbK7UrUe8gAotbA/EKbsKQgSQCQ2mthT1AvGpgTahJL2ubQ7xK2iQCTZ9rMvZGZQeIm2eGHnLq1p9ZNUudYYggVdKStKyBVVWIFFlj/smwWgMmzalEN1sUHzfOtD1UBDGo9SdKLURQaVWRtoIMy1lhC3IfXsxYLeQWIpB1UeCa56yuKYISv/xGcssbuF4sFm0EqNNc7CkbaK+VKggltBFscK94/6fmpbIjdtsITF2WqA+jcx6HbGlf99hJ42Nxp4Xyx/BSg2Rd8rkV6pH1lS6xgKRt26gBJWkagG72zNpC7iBpI6h1MSa3YasWYqi14C1WmpzflC09vrfZCBStDyChGd6Vn/UmEnb+bS5b+mKdy+5j9IxUrVP6a2xHJ1x7WvOtvqEx5J1zXw+viIsSt2y+yja90iiiEWxEQX9geSIqL95x719vNmn5r/UaplLS+F1/v7geLwIh4IfFZnIJOA+0GAfhTIa1EZQqExsxOQEnFpc31xKL262Q23uLtjav2+vDw9RpSsZwGqIoau1ChWTGWklXi8RXB/H7Lz9eA0fgOVkTx0B3l1EniFrjASIQlkrzzWEhT+UFWotpTtnN2QKLAiLI6xIll9fjdBEZhPWPVnNyg1j/d+rxRUF7lK4T5F0xGi0hp4SXp8rVWIykmkiaXNlLtDZ1UdyxJZ+Al6i+uKkuUd6LjNRFjuJepBOBzm1ZfOhD53Wi4GUvcedp59MMYG1zpaehWq8LYXKaJp2hpbugMc1x1vg9lPEJCv9dojHR1f818RhL8wsQicCIr8NlZV2uSZ9JgW+GeZztvBn1Wu6kehy5NZwCk6lg7v2vvEnHzLfJz4NqMyzDT0jcD0fWKCXp2xAdz6ovhLrIcoHwuZoEI8WWs/AUOO5K7f1P2lGBnuodEbsBGTtiXs9p1jg7CvyjD6jufJLuau36ZPBU+IfF4iX7vcFsFnrk9yO9qcrGaUxJxvCRvEru3Qq9vCPzTt/mKoMYKuX8rZAbZZivuxcBfhDQe9LGcRhHPqDBLNNkTDvHSsz313z+qAUnm3M3THtwNlgX3Cfm1lYmns+tPlztUOOOqLrCqoJopH8IK8zUZmZzmv0a5GfeF8Z/8FJxzyh6y8P3ig4StuwinMWYgTshDlb38dNTJ/vL3w8ONz6dP/tnjh+/YFkFahUCocunnv97Bj1k/H7Ec+Veo6PE/dCgdxkOHj0ChF4/7MiRwUAFe5XRFnwQLEJuFO+CT9NDfX21uFpAH+Adzsu729FzWd7dzjZKHx8KHyIzAGUsM+W4CbT75LvTMwLaJcnphyq/bb4T51WBwnVPgQj7kF3BeviIlXM4xytomjUavnXaloc/18TQr5I+YN27VgQ5YcbcZdXAjhjvUBm/C3fDHova1ejnWcx3hddYpilV9qxsMsi4u4/3D65g+oe00qU4aORj5v8xQATKgeRC2401UKDc1i7lwa/ZBp42bDGPA3zYfaA8DDxsGi/xoHYk2xaisBXLv8G1/P8ASqIDtw== +sidebar_class_name: "post api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Create a new bookmark + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/create-a-new-highlight.api.mdx b/docs/versioned_docs/version-v0.27.0/api/create-a-new-highlight.api.mdx new file mode 100644 index 00000000..db7e10a0 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/create-a-new-highlight.api.mdx @@ -0,0 +1,71 @@ +--- +id: create-a-new-highlight +title: "Create a new highlight" +description: "Create a new highlight" +sidebar_label: "Create a new highlight" +hide_title: true +hide_table_of_contents: true +api: eJztVj1v2zAQ/SvCzaztFJm4uUWLph0SNC46GB7O0tlSLJEMSSUxBP734ig5khwl6JChQzdbd7yPd+8e2UBGLrWF8YVWIOGzJfSUYKLoMcmLfV4W+9yDAI97B3IN307fHGwEOEprW/gjyHUDW0JLdln7HOR6EzYCLN3X5PwnnR1BNmepVjn1GRKvkzTmBgGpVp6U5yNoTFmkyEfmd47PNeDSnCrkX/5oCCTo7R2lXKSx2pD1BTm2brU+VGgPV9nA13lbqD0EAc6j9de7nSM/sKu62pJlO6nsDWuqS21fxuVjdcVAHaks9SMwCBkI2FsiBQK2ZU2MXEY7rEsP8uQYBHh68lMhVV2WuC0JpLc1BQFKe/oLx9BOoOAK5HqIx7j7Ya9dFV2OTQhtFGe0ci2sHxcX08Ns55eNaPN/lO8zSgHFdOu1I/sKKt08lhOFvAM1YkXP+YfZNgJ84bn0Xi2gJdLlYvGSO59wwJmk04z3406qswmEg4CKnMP9lO0MnRih99+cermc6KUDMlHaJztdq+xfbySe97nOQILREXiDLOEwz3utZ6m3D2RdVPraliChwSyz5FyYoynmDxcg4AFtwayN9XbmFqTTiuTeGyfnc2+PswNaPBCZGRoDYkJRugiJ3iU+p+RH55+0tTCnBnfQLcPYycXgJnrGhDNzH9ENZOfEexx/fNW2Qq7w++9VBI7H87O/wL48YWVKOlejfmNHIrQYic7iWWR6LWkVYrDwUQgGUy3UTnM2Rr2F5GK2mC2g365nPJY3V5P4LW+ukp22Y/AY7CDirCuMBFQYAXn17h8Fbno6v/FaaCHnHuemxEJFqWLWNB271pCPXhI5U0+uoWm26OiXLUPgz/c1WX5dbHpuxceFgJwwIxvpeKAjF9OW9WHFudmd5Vm+3LggTieWaUrGv+m7GWzHzfXtiunSvWaquI5gMd4M+AgSQICOMEUWxm8NlKj2dVxPaGMyuXDMzTMuxq46E6rjoMKmaT1W+kAqBBBdK57/Q+CN/gPpI19E +sidebar_class_name: "post api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Create a new highlight + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/create-a-new-list.api.mdx b/docs/versioned_docs/version-v0.27.0/api/create-a-new-list.api.mdx new file mode 100644 index 00000000..35e45c79 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/create-a-new-list.api.mdx @@ -0,0 +1,71 @@ +--- +id: create-a-new-list +title: "Create a new list" +description: "Create a new list" +sidebar_label: "Create a new list" +hide_title: true +hide_table_of_contents: true +api: eJy1VU1v2zAM/SsGz1qSDtvFt7TYgG4FVqwZdghyYGw2UStLqiS3DQz994GyEzup12JAdwliiZ/vPVINlOQLJ22QRkMOF44wUIaZpqdMSR9AQMCNh3wJV9IHDysBnoraybCDfNnAmtCRm9dhC/lyFVcCHD3U5MO5KXeQNycJFltKcbNgsiIlAwGF0YF0YGu0VskC2Xp659mlAV9sqUL+F3aWIAezvqOCS7POWHJBkudbjRUNrHxwUm9AQCX1FekNV3gmoMLnw9dsFsVxga96z468PydvWYy5RdEdvIxHuq4Yzgp1jQoE+ApdYFxLusVaBcj3d1HAQ01u91ZTUYBFRzpclmOmulYK14ogD66mGFuKpKOS60iodX2sYmyvvTXat6h+nJ2N09jSV+5l8k4kypEWovgLt2+zd9L7K3z9A4L/ndwX+Wy9VrIYmK6NUYQaTtmUJYgjSgeNHcKsBAQZOHwaamhZ/zSbvST6HMusG+j347gw5TiZFXmPm7G7kzZThN4+6Tb5h60pIQdrUr0WeT5gqtLq4s3lHsn5tLhqpyCHBsvSkfdxilZOH89AwCM6yeCnUrvrFpg9g9sQrM+n0+B2k3t0eE9kJ2gtiJEx6SJk5jYLW8q+d/ZZWwtjP1ipN4xgm3m4WA9wcGbuI5mxDJIRiO7PV+Mq5Aq//V4kzJiZn/0+/vKMlVXUL8tecseFH47bcem/uzoO+u4k3Bv0YzTgVepbw0kZ/DbB2WQ2mUGvwwMs8+vLURjn15fZrXHHGDLmPB3Ghwr1oK2xd+xkUxy0PP7otX0Geg5Tq1BqzpMk03SqWoLaP4hbVlu+hKZZo6dfTsXIxx02y1WvqfRGCtgSluSSDO+J4btoi/mw4LRsrmpO/2LIoth7zIuCbHjVdjUYiOsfNwuWSfcoV2kCweETiPSbAwgwCZykvnTWgEK9qdNEQhuTRYXHmjzRYOqqu0K9G1TYNK3FwtyTjhFE10rgb4g8xH8AqpnrCg== +sidebar_class_name: "post api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Create a new list + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/create-a-new-tag.api.mdx b/docs/versioned_docs/version-v0.27.0/api/create-a-new-tag.api.mdx new file mode 100644 index 00000000..1d3f2014 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/create-a-new-tag.api.mdx @@ -0,0 +1,71 @@ +--- +id: create-a-new-tag +title: "Create a new tag" +description: "Create a new tag" +sidebar_label: "Create a new tag" +hide_title: true +hide_table_of_contents: true +api: eJytVD1v2zAQ/SvCzayVdNTmFi2QdmjQuOhgaDhLZ4uxRDLkKYkh8L8XR6qxkhpFhy6STN7Hu/feeYKWQuO1Y20NVPDREzIVWBh6KhgPoIDxEKDawkbetYJAzeg1n6DaTrAj9OTXI3dQbetYK/D0MFLgD7Y9QTW9Kb/pqGiRsWBbNLkVdySNiifN3QoUNNYwGZZcdK7XDUpueR+kwASh6WhA+eKTI6jA7u6pYVDgvHXkWVOQW4MDLaICe20OEGMGqD21MlOKqmPM58FZE3L6+6vry+gz6nbm5j+B1e0FqOofZ9AtqMUgUcFA3NkWKnA2pGYo8kCZlBQB/SP5kPQbfQ8VTNi2nkKIJTpdPl6Dgkf0Gnd9xjdfZ0b2OPYMFXTMLlRlyf60OqLHI5FboXOgLtA2VyjsPgn+dY4vMhaIMS6cdSe05c5Lf70QIZ1ljhQG1RwEav74bP2AgvDLz01iS+T4frblp2ccXE9nlywo12Zv5UIIyuivV1erK1kDzZIDL9DXtzcXR13f3hR761/PKbxElQQZ0CxaX1i4VyWns8cuLmdmhOmZS9ejNtIliTrNsm/zAtcKOnFDtYVp2mGgH76PUY4fRvKyzPVZ9LTLCjrClnzyyZFOAiBDebeRrhLej9L9D+tH9Ttj3TTk+K+x9cKwt9/uNqLj/Ocx2FZyPD6BSs8KQIFN1CR7pLMJejSHEQ8Sm2uK6vjaNG9Mkqaar9CcFginKUds7JFMjKDmUVh+Q5Ql+wUehMct +sidebar_class_name: "post api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Create a new tag + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/delete-a-bookmark.api.mdx b/docs/versioned_docs/version-v0.27.0/api/delete-a-bookmark.api.mdx new file mode 100644 index 00000000..56a84103 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/delete-a-bookmark.api.mdx @@ -0,0 +1,71 @@ +--- +id: delete-a-bookmark +title: "Delete a bookmark" +description: "Delete bookmark by its id" +sidebar_label: "Delete a bookmark" +hide_title: true +hide_table_of_contents: true +api: eJx9U01v2zAM/SsCTxugxe3QYYNvGdoB3Yah2DLsEORA20ysxrZUiW6TGfrvA23nq83qi/XxKD4+PnZQUMi9cWxsAylcU0VMKrN2XaNfq2yrDAdlCtDAuAqQzuHzeBlgoSFQ3nrDW0jnHWSEnvy05RLS+SIuNDj0WBOTDz0g5CXVCGkHvHUEKQT2plmBBtpg7So5MmSKarNd1U/3nz7azd8P5YbZ5p+EgeEesmNwW0DU4OmhNZ4KSNm3pKHBWkDZAaTBSHEOuQRh5Sk42wQKwuT9xZX8TnX4YVVuG6aG1TvF5ZEiTxhU0avUJ786F73jpxrLamnbRiiM7wkanatMjoJO7oOEnJHGZveUM2hw3jrybAa6uS3opYBRQ00h4Orc3YlG8+GFA34R5ZM9l7aAFIbqJLHolUKyqz0k3UHUCNJ8/7hrbesrSKHDovAUQkzQmeTxEjQ8ojeYVQP78XqQbIltxZBCyexCmiTst5M1elwTuQk6B/qZrrOS1PiCssu+L99GvBq4QIzxyJW/RNQh87E39wpJZqmjh4lnehDocfHF+hqF4dc/s15G0yythEvVA6XLycXk4siaez7Tu9uz/Kd3t2pp/Sl5KTZqcDZwjb0dRhOP84h7/z1/szv46vXhHQpm2nDiKjSN5Ot71o19nu8nJoCG9Gh8FhpKG1ggXZdhoN++ilGOH1ryMvqLQ5t7MxQmyLqAdIlVoFc4v/k5OvOt+h/L8RCbbe+mqpUdaFjT9nTM4yJqKAkL8j2LATDNc3J8FPpi+sQxe/df33y/md2ABjy1yjNr9AnOMuu6ATGza2pi3BNl2QvHGP8BgxHeWQ== +sidebar_class_name: "delete api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Delete bookmark by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/delete-a-highlight.api.mdx b/docs/versioned_docs/version-v0.27.0/api/delete-a-highlight.api.mdx new file mode 100644 index 00000000..39cd9b2b --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/delete-a-highlight.api.mdx @@ -0,0 +1,71 @@ +--- +id: delete-a-highlight +title: "Delete a highlight" +description: "Delete highlight by its id" +sidebar_label: "Delete a highlight" +hide_title: true +hide_table_of_contents: true +api: eJytVcFu2zAM/RWDpw0QknTosMK3AO2wbANWbBl2CHJQLCZWY0uqRLfJDP37QNtJnNbtdtgpjvkkPj4+0jUoDJnXjrQ1kMI1FkiY5HqTF3qTU7LaJ5pCohUIILkJkC7g0yEaYCkgYFZ5TXtIFzWsUHr004pySBfLuBTgpJclEvrQAEKWYykhrYH2DiGFQF6bDQjAnSxdwa80alXs9pvy8e7qg939fp/viGx2xRQ0NZAjhZmCKMDjfaU9KkjJVyjAyJJReQ8lQHOBTlIOzMtjcNYEDMzl3WTCP+dazHNMVKOHOgkCAjJrCA3xAelcoTPJB8Z3gU8NVGhXd5jxQeetQ0+6zbmydltKv52p52pEAYGkp2/rdUDqxU1VrtBzHI16JZrZwvpBlU1Vcg/3WBT2EVgH1mbjEQ0IWBUVclMVrmVVEKQHYBRAuKOhK01VFHLFbWHxowBjCf8JqIdLrwL6F1TJPEpCNR0gEs98sOjre65mX7uuqo5zw+iYv59tOWA9iJFzXk4un3vnCEqMpWRtK6P+n3Myqwb0jQJKDEFuhmJPtGluOOGXsS2lRMqtghRa23NiHpcUxkf/h3Hdm6rI0qJ/OEx35QtIoZZKeQwhjqXT44cLEPAgvebWN/y7cKvawWc5kQvpeEx+P9pKL7eIbiSdAzEwlt0NiV0nlGPypcMnLRduTG8x/WBZu5nrraejRpyZ62hgkHYgHobm4aP1pWSGn3/NGyG1WVs+zlW3lC5Gk9Gkt52OfKa3s0H+09tZsrb+nDwXGwU4G6iUjSG6NdYtZXm2hc4urU/W+ssKb0tm049dIbVp5o27Vne9Xpy2ZgABaX+HLgXkNhCD6nolA/70RYz8+r5Cz1+A5anVjSGUDvysIF3LIuArtN987/z5NnmJZ/dSmn3jKF5VKYCALe6fLPu4jAJylAp9Q6NFTLMMHfXOPhtCts1xCK5vvt7Mb0CAPPfLE380CQap1XWLmNstmhiPTIn/M8cY/wCwMJE0 +sidebar_class_name: "delete api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Delete highlight by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/delete-a-list.api.mdx b/docs/versioned_docs/version-v0.27.0/api/delete-a-list.api.mdx new file mode 100644 index 00000000..5059b462 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/delete-a-list.api.mdx @@ -0,0 +1,71 @@ +--- +id: delete-a-list +title: "Delete a list" +description: "Delete list by its id" +sidebar_label: "Delete a list" +hide_title: true +hide_table_of_contents: true +api: eJx9U8tu2zAQ/BViTy3ARkmRooFuBpICaYMiaF30YPiwltYWY0lkyFViV+C/F0upfiROfbFIDjmzs7M9lBQKbxwb20IO11QTk6pNYLXYKsNBmRI0MK4C5DO4M4EDzDUEKjpveAv5rIcFoSc/6biCfDaPcw0OPTbE5EMChKKiBiHvgbeOIIfA3rQr0EAbbFwtW4ZMWW+2q+b54eqz3fz5VG2YbXEl7IYTRNhvS4gaPD12xlMJOfuONLTYCKAeABqMFOOQKxA1noKzbaAgCj6eX8rfcd3frSpsy9Sy+qC4IrWwdt2gX6tnDKpMriTiy1O3RZdqLaul7VqhH98SJDpXmwIFmT0EgZ+wwy4eqGDQ4Lx15NkMUgtb0mvTooaGQsDVqbMjb2bDC3v8PMpP1lzZEnIYKhNi8SqHTBwMWT8YGUEa7Z/+tbHzNeTQY1l6CiFm6Ez2dAEantAbXNSD6vF4sGmJXc2QQ8XsQp5l7Ldna/S4JnJn6BzoF15OK1LjC8ouUy++jXg1aIEY40ECf4qZA/NhDnfOCLPUkWCQjyDQ48cX6xsUhV9/T5N9pl1auS5VD5Iuzs7Pzg9iuNMzub89qX9yf6uW1h+Ll2KjBmcDN5hiMIZ2nDlMU/fyvX6fpbeHcyiUacOZq9G0wpN61Y99naXJCKAhH0dkrqGygeWo7xcY6JevY5Ttx468jPV839bU/NIE+S4hX2Id6D863/0YE/hevaVu3MR2m9JTd7ICDWva7sc4zqOGirAknxQMh5OiIMcH115NmKRjl/Drm7ub6Q1owONYvIhBIjipqu8HxNSuqY1xJ5JlLRpj/AuPmMsh +sidebar_class_name: "delete api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Delete list by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/delete-a-tag.api.mdx b/docs/versioned_docs/version-v0.27.0/api/delete-a-tag.api.mdx new file mode 100644 index 00000000..aaf7e855 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/delete-a-tag.api.mdx @@ -0,0 +1,71 @@ +--- +id: delete-a-tag +title: "Delete a tag" +description: "Delete tag by its id" +sidebar_label: "Delete a tag" +hide_title: true +hide_table_of_contents: true +api: eJx9U01v2zAM/SsCTxugxe3QYYNvAdoB3Yah2DLsEOTA2EysxrZUiW6TGfrvA2UvH206X2SJT+Lj42MPJYXCG8fGtpDDNdXEpBjXarlThoMyJWhgXAfI5zCTdaEhUNF5wzvI5z0sCT35accV5PNFXGhw6LEhJh8SIBQVNQh5D7xzBDkE9qZdgwbaYuNqOTJkynq7WzdP958+2u2fD9WW2RafJLnhBJnh+raEqMHTQ2c8lZCz70hDi43EOcU1GCnEIVcgXDwFZ9tAQfK/v7iS5bTm71YVtmVqWb1TXJFaWrtp0G/UEwZVJkVS3qtzt2e4Vq1ltbJdK9nHpwSIztWmQAFm90HQZ7Swy3sqGDQ4bx15NgPTwpb0UrGooaEQcH0udqLMfHjhgF9E+WTPlS0hh6EwSSxS5ZBJk7M+qRhBeuwf/3Ww8zXk0GNZegohZuhM9ngJGh7RG1zWA+cxPGi0wq5myKFidiHPMva7yQY9bojcBJ0D/VzIitT4grKr1IivI14NXCDGeGS+nyLlkPnYgntdJLPUkWCQjyDQ489n6xsUhl9+z5J4pl1ZuS5VD5QuJxeTiyMH7vlM727P8p/e3aqV9afkpdiowdnADSYTjIYdhw1l3J4/1x+M9OpQDmUybTlzNZpWsqRO9WNP58PgasiH2VhoqGxgCfT9EgP98nWMcvzQkZdpXhxamhpfmiD/JeQrrAP9h+SbH6P33qrXuI2H2O6Sc+pOdqBhQ7v9+MZF1FARluQTgSE2LQpyfHTrxWiJMfbWvr75djO7AQ146ohnDkgJzpLq+wExsxtqYzxwlL1wjPEvTTHFIQ== +sidebar_class_name: "delete api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Delete tag by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/detach-asset.api.mdx b/docs/versioned_docs/version-v0.27.0/api/detach-asset.api.mdx new file mode 100644 index 00000000..f08ec416 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/detach-asset.api.mdx @@ -0,0 +1,71 @@ +--- +id: detach-asset +title: "Detach asset" +description: "Detach an asset from a bookmark" +sidebar_label: "Detach asset" +hide_title: true +hide_table_of_contents: true +api: eJy9VE1v2zAM/SsCTxugxe3QYYVvGdoB3Yah2DLsEPjA2HTsxrZUiW6TGfrvA23nq82KHYblEkt6oh4fH9lBRj51peXSNBDDFTGmhcJGoffEKnemVqgWxqxqdCvQwLj0EM/hw7jlIdHgKW1dyRuI5x0sCB25acsFxPMkJBosOqyJyfke4NOCaoS4A95Yghg8u7JZggZaY20r2SqpzKr1Zlk/3l2+N+tf74o1s0kvhUHJPWTL4CaDoMHRfVs6yiBm15KGBmsBLfYgDaWkaJELCPqf0ZiKUC9ywBFxRCARuLem8eSFw9uzC/k7LsdXo1LTMDWs3owVeUSvsr5KlCnfpil5n7dVtRECF6eCbHVSjWGVm7YRJmNYQaO1VZmioKM7L1dOaGMWd5QyaLDOWHJcDqxTk9FzBYOGmrzH5amzI53mQ4Q9PgnykzUXJoMYMqqIBdHLFkO0raiPun1xQ9Sr46NuFDuAuNI9bD3Xugpi6DDLHHkfIrRl9HAOGh7QlbiohnTG40HDHNuKIYaC2fo4ithtJit0uCKyE7QW9BOhZwWpMYIyueKC1OcRrwYuEEI4aJfvovLw8mHT7CSTlyWPHiZm7kGgx4+PxtUoDD/9nPW6lk1u5LpkPVA6n5xNzg7MuuMzvb05yX96e6Ny447JS7JBgzWea+z9MTp7Oy5E86fhur3H/masDBkzrTmyFZaNPNgXrRsrP9/1sgcN8VFjD8WX7W2vJRoK41mudd0CPf1wVQiyfd+Sk0GV7GvfOyQrvXxnEOdYeXohm1ffRv++Vn9iPm5is+ktVrWyAg0r2hwPJRlE//HlrTwhCRoKwoxcn/xwOk1Tsnxw79loEPfuWvPq+sv17FrkP7btE5v2D5yk1XUDYmZW1ISwY8myFo4h/Abov0RX +sidebar_class_name: "delete api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Detach an asset from a bookmark + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/detach-tags-from-a-bookmark.api.mdx b/docs/versioned_docs/version-v0.27.0/api/detach-tags-from-a-bookmark.api.mdx new file mode 100644 index 00000000..53a255cb --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/detach-tags-from-a-bookmark.api.mdx @@ -0,0 +1,71 @@ +--- +id: detach-tags-from-a-bookmark +title: "Detach tags from a bookmark" +description: "Detach tags from a bookmark" +sidebar_label: "Detach tags from a bookmark" +hide_title: true +hide_table_of_contents: true +api: eJytVV2v0zgQ/SvRPLGStykrVovydoG70gWEEBTxUPVhGk8b3yaxsSeXdqP8dzTOR1taLmhFH6rEOR7PnDlz3IKmkHvj2NgaMnhFjHmRMG5DsvG2SjBZW7ur0O9AgSxDtoQXw1KAlYJAeeMNHyBbtrAm9ORvGi4gW666lQKHHiti8iECQl5QhZC1wAdHkEFgb+otKKA9Vq6UJUNGl/vDtvp6//wfu//v72LPbPPnkoHhCBkzuNPQKfD0pTGeNGTsG1JQYyWg9RGkwEh5DrkAyUp2UOAXVh8kl3MSFgX1DLBNdCRkBgpyWzPVLHB0rjQ5Cjy9D7LnSmF2fU85gwLnrSPPhkL8GjmcUOg9HiQ9pir80u47fcleF3vzLpZ98U1+pxwt+xxW43pwtg59+L/m8+t0lCZwYjcDHaSFn8To8Pt4GSP/Ajf/TzKLSN0FF9O5Ax/P5s8uKRjlltSWk41tav37Cs+tvtY1BRWFgNurHT0vIUY44ldDxyviwmrIQFNJLIgo/wzScTBC2h5npEujLGSg/cM4ro0vIYMWtfYUQpeiM+nDU1DwgN7guuxLGD73vG2wKRkyKJhdyNKU/WG2Q487IjdD50Bd0dcQQSTGBSVvBnzS5yJdO3Gaj8Jsf/Kp30w0yclSR4SJD0QQqOHhX+srlAxff15ELqVjH46GcDuqahzW5TR3R+lN4zY1ZdWJyWys7BP++uKezuaz+YkKp8pu3t9dZeLm/V2ysf6cBqGtU+Bs4AqjugaLe9yvz6K3R8H+zOZ7Gpn2nLoSTS1nRyW0g4SWk7eKYLIzo+3NRUFhAwuybdcY6JMvu06WvzTk5a5YHTUUGdYmyLOGbINloEeSf/Jh0P4fyY+SHQ2kPkSplo28gYIdHc7vhdi1glCTj1n0gJf9WX8uJMwxwMWUd2rccZPn5PhR7OpkIl/dvr1d3IoihwuoiiYAHr+Civ8xXRurj0KPay2UWG+baArQRxX94rn8v5N7r99rhLRtj1jYHdVdN/HD8i7UdN03RJTKrQ== +sidebar_class_name: "delete api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Detach tags from a bookmark + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-a-single-asset.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-a-single-asset.api.mdx new file mode 100644 index 00000000..63b18a94 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-a-single-asset.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-a-single-asset +title: "Get a single asset" +description: "Get asset by its id" +sidebar_label: "Get a single asset" +hide_title: true +hide_table_of_contents: true +api: eJx9U02P0zAQ/SvWnECymi4SYuVbhWC1cFlBEYeqB7eZNqaJ7bUnpSHyf0fjeEu72uUUf7zMezPveYQa4zYYT8ZZUHCHJHSMSGIzCENRmBokkN5HUCtY8E2EtYSI2z4YGkCtRtigDhgWPTWgVuu0luB10B0ShpgBcdtgp0GNQINHUBApGLsHCXjSnW/5yKCp29Ow737/uv3gTn/eNycit71lekMZkunva0gSAj72JmANikKPEqzuGKELQoLhbrymBlhPwOidjRhZw7v5nD/XjefaYussoaWZ+DgtBOsVJoqam+mMxZoHQw2WKfH9DFKS0CE1rgYFeySQE7WCKsNiNRZlCXh24fg0mT60oGDUdR0wxlRpb6rjDUg46mD0pp0Ul+tJ9U73LYGChshHVVUUhtlBB31A9DPtPchnrS1Z7VRBuF0W/7XgxaQFUkoXpn5nuybmS2vP7jEz95FhoAoIZFl8dqHTrPDLz2UejbE7x79z15Okm9l8Nr9w9qxn8XD/ov7Fw73YuXAtnptNEryL1GnLDCUGOcUiGrtvi1HPi45QrH4981OvhCeqfKuNZaps11jMXU1xiyBBPQVvLaFxkfhyHDc64o/QpsTHjz0Gfi7rf97mBNQm8roGtdNtxP/ofPOthP6teE1fOdR2yBFqe96BhAMOF68jrS/zevdpCRL0tcXPLM1KXyw+jhNi6Q5oUzpzEe+ZKaW/hvt+aA== +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get asset by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-a-single-bookmark.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-a-single-bookmark.api.mdx new file mode 100644 index 00000000..8e3b957f --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-a-single-bookmark.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-a-single-bookmark +title: "Get a single bookmark" +description: "Get bookmark by its id" +sidebar_label: "Get a single bookmark" +hide_title: true +hide_table_of_contents: true +api: eJzNV01v4zYQ/SvEXNoCQpwttujCN++i3aZFd4MmRQ+GD2NxbDGWSC1JOfEK+u/FUJ92lETJBmhPccQZzuPjm+FMCZJcbFXuldEwh4/kxdqYXYZ2J9YHobwTSkIEHrcO5kt43yw6WEXgKC6s8geYL0tYE1qyi8InMF+uqlUEOVrMyJN1wcDFCWUI8xL8ISeYg/NW6S1EQHeY5Sl/UqRkenfYZrc37342d19/Su68N/E7RqB8MGkRXEioIrD0pVCWJMy9LSgCjRkbrXujCBSfLEefQBWNwFgbkxJqiEDSBovUt3sdU3OxEY688EaE1Y6m75yIjfakvbhVaSrWJJSO00KSFEoLn5Cw5HKjHZ2JT8ZTJHyieqcYNfukaLckNsYKZzLqdndnx6fcYOr+P9A6vpttP9SOLedfCrIHYCm0YRzz/uP5Of85PsPn9Q3FjNMnvQIleuQoDSD2wjxPVYzsNbtx7DpypSZsBhHk1uRkvaoDK3lffVUEsSX0JBd+dDUzUm3U+HIEukhTXLMwmfqqk+kES7RxovYkR6RYRbDBveHkemjd43ar9PbKoy/c0/EiIF1knMGuiGNyDjiESgtLTBNpyV6rKgJXZBla9TVQ/Prba+On0VPjOEwjPVSnzhCtxQOL0FPmXiyLWtojC+g9xgnJ96PgWiJQQQRJkaGGVXWUw0sIJTXsf7RbsBto3Wj6vAm18/ED1KsPQ0mV3gXyC5uOnmi6aI+SdoK9ynBLf4+Ffch44Rz5i5ErGdNIbIm0S4x/jtemSNNLjlQn4HNcc0uxxduU5Auc90qSeRZQ3Kt4ItGJz9IPvXSetG9k9hw47cmnBcDCJ8ZOY7VYp8olNM1aoqfLxmMacPb4synjExxOkjVY17mz4gbi23LR050PuRh+jCWjM4WNJ+bMONQ2xrdiRRZHABt+XT9hHtKXg8hN7zSmLZa2SunTaIEdS/NnMBKBU1+H2+oiW5N9JAVeTHNPSn/WV2C90DttbkdejeCwqjpqX//Jm3TN/Jr8Nqg2wzLcMnE1/LJGrcleNOo4qb7Q1EW2a9q+UJNgpNhyFj5ETnhSe/yratSgb/WOGrtBM3bUeZ22WePdUdN/9ILq7md1f2yBKiB7e/72fg/c2ghtvNiYQsvX631jI8e7mYyc45u5v3ZCYNiht2eGq+DvEyNhDtv60njOmsOsmxJmZT+MVcwg2X07EoZ+BEqU0pJz1QxzNdu/YUmgVZx/AXqzXPPVTGiQeJ+7+Wzm7eFshxZ3RPkZ5jmcDkfXCYlmB2E2Yej5o7EXNRa+ksE0e8WM1pGHM21HD0cOomczbsqDEes3/PjV2AwZ4e//XAcOld4YdudT15DenJ2fnQ9G2g7P4vJiFP/i8iLMX0fg+bD8eBrnucmcl+0wxkM8Cqf0Nu2ntdN9y15Yj0z99Yn5PZnlKaoweTRNZH3Ryy5rOQHmg7l7FUFinGeTslyj4/pdVfy5Hgv5/qVyfMsPzLVDiP/hiDtKwo4OY2PvHtOCjcPQ24r4mUf9/q8m6X4QD0Vvi74+DGO2qAaXEB6LhFByb7UsG4NFHFM+hHuvsDD8LrE//nINdT83HEWPVT+cUo5hlWVtcW12pKuqQ+n5fwZYVf8Ci4Bq+w== +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get bookmark by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-a-single-highlight.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-a-single-highlight.api.mdx new file mode 100644 index 00000000..0916ef9d --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-a-single-highlight.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-a-single-highlight +title: "Get a single highlight" +description: "Get highlight by its id" +sidebar_label: "Get a single highlight" +hide_title: true +hide_table_of_contents: true +api: eJytVcFu2zAM/RWDpw0QknTosMK3HLau22HD1mGHIAfFYmw1tqRKdJvM0L8PVNzESd1ih53imE/U4+Mj3YHCUHjtSFsDOVwjZZUuq1qXFWWrXaYpZFqBAJJlgHwBn5+iAZYCAhat17SDfNHBCqVHP2+pgnyxjEsBTnrZIKEPCRCKChsJeQe0cwg5BPLalCAAt7JxNb/SqFW93ZXN493VB7v9877aEtniiiloSpADhRsFUYDH+1Z7VJCTb1GAkQ2jqgFKgObqnKQKmJfH4KwJGJjLu9mMf06F+La6w4KyR03VQBAlSU5AQGENoSE+Jp2rdSH52PQu8NmROm3KBgKctw496f3NK2s3jfSbG/VckyggkPT0bb0OSIO4aZsVeo6jUa9EC1tbP6q1aRvu5A7r2j4Cq8EKlR7RgIBV3SK3VuFatjVB/gSMAgi3NJbStHUtV9wcbkEUYCzhPwH1eOltQP+CKoVHSajmI0TiiRsWQ31P1Rxq11fVc06MDvcPb1uOGBBi5DsvZ5fPHXQAZcZStratUf/POYVVI/pGAQ2GIMux2Jk2KcMRv4z7UhqkyirIoUzSpInJYXoYgTDtBoMVWVf0D08D3voacuikUh5DiFPp9PThAgQ8SK+574l8H95L9mSyisiFfDolv5tspJcbRDeRzoE40/W2wqzPkNl1RhVmX3t8tufCXRnspp+saT9wgw11EIhv5joSDPIexJOQHj5Z30hm+OX3bVJRm7Xl41z1ntLFZDaZDRbUgc/8+80o//n3m2xt/Sl5LjYKcDZQI5Mb+k3GS1lmQZuyxuMyOk/cHb312hrf18yWn7paapOmjdvW9c1eHDdnAAH5cI8uBVQ2EIO6biUD/vJ1jPz6vkXPX4HlsdfJEUoHflaQr2Ud8BXOb3707nybvcSzfynNLlmKF1UOIGCDu7OFH5dRQIVSoU809oh5UaCjwdlnI8i+OYzA9cdbECBP3XLmjpR9lFfX7RG3doMmxgNN4v9MMMa/V8aQOg== +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get highlight by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-a-single-list.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-a-single-list.api.mdx new file mode 100644 index 00000000..d00690b6 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-a-single-list.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-a-single-list +title: "Get a single list" +description: "Get list by its id" +sidebar_label: "Get a single list" +hide_title: true +hide_table_of_contents: true +api: eJytVMFu2zAM/RWDpw0QknTosMK3Hrai24AVW4cdghwYm4nVypIq0W0yQ/8+UHbTpE2HHXayLVLke3zP7KGmWAXtWTsLJVwQF0ZHLpbbQnMsdA0KGNcRyjl81ZEjLBREqrqgeQvlvIclYaBw3nED5XyRFgo8BmyJKcScEKuGWoSyB956ghIiB23XoIA22HojR5p0bTbbdftwc/bBbX6/bzbMrjqT7ppzinS/rCEpCHTX6UA1lBw6UmCxlQQzJCjQwsQjNyBoAkXvbKQoCN7NZvI4JP1teUMVFw+am4F8jYwTUFA5y2RZbqD3RlcoN6Y3Ua4dIeZyIVDgg/MUWA9Ndf2SfHqEfSRwgO7l1GxnDC5lJkI/KdDVscSUhSArM/mXKkPCEZFs14r6LdoODSiILQYWG9S0ws4wlI+xpOCuo7D9p36+Wxpd7aUunTOEFtKBxHPIHszDGqnuEduVWRwaBVKSMqez05dyS7ywjouV62z9/2SuXH1cz5ZixPWx2DOmucJT/iINLFrixtVQwppyV3F2CVOxapz2g+2TCEPh/vGn64KBEnqs60Axpil6Pb0/AQX3GLTokCGP4WFGj2I2zD6W0ymH7eQWA94S+Ql6D8+cCdcNFWOFwq0Kbqj4MuYXAxaRYW9f/JBJDp33t8ZuLNJZeOQ0cUROAjW+fHKhRUH4+dd1np22KyfXhfUA6WQym8z2lsYOz/nV5VH851eXxcqFQ/BCVhzqIreYPTCuGFmPWERt14byqnhes38y0yu7dGDKtOGpN6itNMpi9aOw87zIIigox422UNC4yBLq+yVG+hlMSnI8/m3zxZOuWf1aR3mvoVyhifQXkG++j/57W7yGbjxEu832MZ18gYJb2j5t3bRIChrCmkJGMATPq4o871178X+JPXb+vvh4DQrw0BTPTJCrH4XU90PGtbslm9IOIcu3AEzpD17EW8M= +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get list by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-a-single-tag.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-a-single-tag.api.mdx new file mode 100644 index 00000000..7375b7f6 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-a-single-tag.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-a-single-tag +title: "Get a single tag" +description: "Get tag by its id" +sidebar_label: "Get a single tag" +hide_title: true +hide_table_of_contents: true +api: eJytVMFu2zAM/RWBpw0QkmzosMK3FNiKbocVW4YdghwYm7HV2JYq0W0yw/8+UHbTJPW6y06WRYp85HtkCxmF1BvHxtaQwDWxYszVeq8MB2Uy0MCYB0iWsJDvSkOgtPGG95AsW1gTevLzhgtIlqtupcGhx4qYfIgOIS2oQkha4L0jSCCwN3UOGmiHlSvlypDJyt0+rx7vLj/a3e8PxY7ZppeS3HB0WWB+k0GnwdN9YzxlkLBvSEONldg52jUYqcIhFyBYPAVn60BB8r+fzeRzWvC39R2lrB4NF6o0gVWGjBPQkNqaqWZ5gc6VJkV5Mb0L8mykLBsDgQbnrSPPpk9qspeld0+oxwxNdWXttkK/DUcOdVOtyZ87XO3nzJgWlC2i27/AoBkNWTQV1iOWrjvp9xKiHCL0M6CvwlqdsDiEvZhdvCRjgbmqLauNbers/3GQ2my82RWFgPmY7azwGOHZf9X1RVTEhc0ggZxiVpFdAlMZmGkbFdmBzIt/eJqGxpeQQItZ5imEborOTB/egYYH9AbX5cBTb+4btMGmZEigYHYhmU7Z7ydb9LglchN0DvR5FwtSQwRlN4oLUl8Hf9VjEQ6OBvmH9LHPfDzOh6ZIZqkjukEyOIEeDp+tr1AQfvm1iJ0z9cbKc6m6h/RuMpvMjqb5gGd+ezOKf357ozbWn4KXYjsNzgYeBDsMv2wtVMHUeUmyvs5Dts9KGt9wfZ1MO566Ek0taSJV7UDqst+CGpJ+0aw0FDawGNp2jYF++rLr5Pq+IS+rcfXMaWQ+M0HOGSQbLAO9gvDN90F5b9XfsA2XWO+jdMpG/kDDlvaHXditZLQJM/IRQG+bpyk5Pnr1YrBEGQdhX39agAY81cMZ/zH6KKK27T0Wdkt11z0DlH8B2HV/ANg2NwA= +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get tag by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-all-bookmarks.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-all-bookmarks.api.mdx new file mode 100644 index 00000000..cc0b52c7 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-all-bookmarks.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-all-bookmarks +title: "Get all bookmarks" +description: "Get all bookmarks" +sidebar_label: "Get all bookmarks" +hide_title: true +hide_table_of_contents: true +api: eJzNWEtv20YQ/ivEXHohJKdH3RSjTdyisQG76MHQYUSOxI3IXWZ3KEcR+N+LWVIkJa9syjHQnixz5/3a+XYPKbnEqpKV0TCDT8QR5nm0NGZToN04iIFx7WD2CB+7b4sYHCWVVbyD2eMeloSW7LziDGaPi3oRQ4kWC2KyzhO4JKMCYbYH3pUEM1gakxNqqGOw9K1SllKYrTB3FIPGQkjQJpnaUgoxKDHtW0V2B3X8Nmkr3BoxeJQ8x1bpNcRAuirEdXQJxD5U4ntKK6xyhlnz5QWtzli+tSnZEUp1VSzJviQtV4XiS8xnxbl8uK6sMy+KThqK8aEeRIFtRfFJHd2sIkccsYn8aVdPv7goMZpJc/SkpM4oUjrJq5TSSOmIM4osudJoR5Poi2GKI85Uz5SgFp4c7ZqilbGRMwX11ToJ+vg/Ma0Ldiv2umE8CfpCHGjUOIn7r1dX8ufYh9vlV0rETs6O2zVKkVFUtVYJK5ZlrhIU1ulXJ/yBvBovEWIorSnJsmq093OgJ0VrcSdWMxXudREqfV6adQyJJWRK5xw8LUyqVip8HIOu8hyXUtqSwror9BGU3VQJTo/BlAieM67XSq/vGblyr+vrB4irkoScTNMVqryyJGEinQrXoo7BVUWBVv3wWXp/8drwuPA0duzGBd3fC+9cFk2LBA6QGZOM0o9B47pBrSCGrCpQw6I+mgWPorGVfyTN0w3axWi6Xflb62UHmtPzpuRKb3zwK5sHPRpftEfNP4JeFbimv0NqzxHPnSO+CaQkVCOJJdIuM3wJ16rK8zvR1DTgJaylpcTiU07pG5i3KiVzkaG4VcnIQGdc5Nd96bxK35bZJeYcPB+nACvOjB0X1WqZK5fROOoUme5ajnGGC8df7RgfwXDSrJ666Z2FLCI/14tM39n3ov8RakZnKpuM7JmwqQcdP2srSnF4Y/2vh1fIffuKknTVM4VqS0pb5fQlOGBDbX5BRGJw6sdQbLvMnm+BN4e5D0rv6ztEvdIbbZ4Ct4ZnWNRdaN//yhuVZrlNPg+mzXAMHyJxP/yyRK3J3rTVcTJ9oZ2LQtdueH4mQWDYSheeC46/Unv7F3WQoF/1jha7eAjxjvDZ8ZoV3o7a/aMvqC4/ix74HCAriF2avnOLhC4uviEeHsgZqLrDtdLiZg+T69rHoyDOTAozWDcBRoHJMB2KdGS3B6zs1wXYY5pacq6eYqmm2w+SMbRKLPS11B430OAARzPm0s2mU7a7yQYtbojKCZYlnGKgh4yiVkJkVh7b/NnSR40tYvwA5t8LXmghwQDsd2EUzb4mhUx2Zk8k5eV//G5sgWLhH/88+FwovTLCLl43Jn2YXE2uBpi1s2d+dxO0f35342HWkfHirNxtxrHsgLP9AXOFHjZO1qpuMoVfQRpHZcpPyxyVxwPtatekdFglixgy41g+7vdLdDJH61o+NzBPEp0qJ+nsceqGdsfvHlvMK1HqofgZ8qPGGcMwfJMYQ394dRhD2z0jvEx8NvD/ITYP5rfx6hle771b9G3pn75iyAgltpLghnueJFQOuZ7hcZHSDYlPvz1As8cNIehxOw3RCerdQPZ+31A8mA3puoaDCyz/Qy0D+l+/2OP7 +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get all bookmarks + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-all-highlights.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-all-highlights.api.mdx new file mode 100644 index 00000000..a2577cf4 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-all-highlights.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-all-highlights +title: "Get all highlights" +description: "Get all highlights" +sidebar_label: "Get all highlights" +hide_title: true +hide_table_of_contents: true +api: eJyNVU2P2zYQ/SvCnAl706NuRtGm2x6yQLfoYeHDWBpbjCmSGY42MQT+92Ik2ZY22qS+2KYe37z5euqhplSxjWKDhxI+khToXNHYU+PsqZEEBgRPCcoX+ON+uDeQqOrYygXKlx4OhEy866SB8mWf9wYiMrYkxGkApKqhFqHsQS6RoATftQdiyAaYvnSWqYbyiC6RAY+tIpxtrYABq8K+dMQXyGaFKQlbf1KdVpwe/NpxCj+krkbEknuv+BSDT5SU/peHB/1aFujT4TNVUny10rwpVFGj4AYMVMELedG7GKOzFerd7eekBCv6w0AJBiKHSCx2DD9rwR2LzHhR3UJt+jnHIYRzi3x+rL+vVzaQBFk+HY+JZLUz5OsfPK2CC7zWB/Jdq/NyIefCV9Cy1mDgxEQeDBxcRzpANR2xcwLlFZgNCH2TNUrfOYcH7a5wR9mAD0L/C2jXU+8S8TtVqZhQqN6tCMmLmXqZ13dZzXntpqwmzYOiW/x5tP19gm+bNkT09E2mmf55xm8ULhZ5RjQL9oQn61XDbL+zfgy0JE2ooYTTkEdE3W/YLkgT8et1yzt2UEKPdc2UUt5itNvXD2DgFdmqyGEqp8fjcl1noBGJqdxuhS+bMzKeieIGYwTzZgOfGyomhiIcC2mo+GvCF6MWVT8zqL914aZ9mNnUrZIaWfMYYFBOIB3U4cfvgVtUhX/++zy0w/pj0Oua9Sjpw+Zh8zAzoJue3dPjqv7d02NxDLwUr8lmAzEkaXGwismtVk15QdrfTecdCx9T1UHcRofWDzug3eqnri5GZW+gCUn0tO8PmOgfdjnr8eiV2uvaJu3o3VvPdJm59ivqmpcwePY72JsN38H7+6wMbxIDDWFNPIQcb+2qiuI8xHcuqyy30f342zMYwGXP3/R4YL9arL/MuPt+RDyHM/mc4Spd9D/kfc75P+nqe/Y= +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get all highlights + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-all-lists.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-all-lists.api.mdx new file mode 100644 index 00000000..04adc330 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-all-lists.api.mdx @@ -0,0 +1,63 @@ +--- +id: get-all-lists +title: "Get all lists" +description: "Get all lists" +sidebar_label: "Get all lists" +hide_title: true +hide_table_of_contents: true +api: eJyNVE1v2zAM/SsGz0Kc7ehbDlvRbcAKLMMOQQ6MzdRqZEmV6G6Gof8+UHY+G2A7WRYfP98TR2go1kF71s5CBQ/EBRpTGB05ggLG5wjVBr7l/62CSHUfNA9QbUbYEQYKq55bqDbbtFUQKHpnI0WoRvi4XMrnOsP33QvVXPzW3J4zFQ0yLkBB7SyTZXFD742uUdzKlyi+I8S6pQ7lxIMnqMDlaKDAB+cpsJ4yT+WfYRgCDqBAM3Xx3+66ucBEDto+Q1JgsaO7hqsOb+0KbG8M7gxBxaGnpEDX94BJgcdAlh/vpL8TZQK8B5LtO+GsQ9ujAQWxw8BCXkN77A1DdbQlBa89heG/8vl+Z3R9Ad05ZwgtpCTEv/Y6UCOJdQPzsOZWLxo7hdkqYM0SPosL0m2UicNtStnSEbeugQqeKfOFojkojzqNFN4oxKzKPhioYMSmCRRjKtHr8u0DKHjDoKWjzPFsngR6HEvL7GNVlhyGxQEDHoj8Ar2HG45h3VIxRyjcvuCWiq8zvphqkYYu3ssPUe6U+fLVnGYpmaWPDJPZZhCo+fDZhQ6lwi+/1nne2u6duEvXU0kfFsvFEs5TPdWzenq8W//q6bHYu3BdvDQrXLvIHWaRTqp/txluNH96uO9XyNQg0x8uvUFtJX7maJxpPHGtoHWR5WIcdxjpZzApyfUs0s32TGLeOApawoZC5v1AA1SwqmvynNk2fX77t3tEaDnJ6eHTGhTgNRk3w8/Rj5vEDhexx3FCrN2BbEqg5iJY/iGJeP8CO0jVRg== +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get all lists + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-all-tags.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-all-tags.api.mdx new file mode 100644 index 00000000..db50781b --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-all-tags.api.mdx @@ -0,0 +1,63 @@ +--- +id: get-all-tags +title: "Get all tags" +description: "Get all tags" +sidebar_label: "Get all tags" +hide_title: true +hide_table_of_contents: true +api: eJyFVE1v2zAM/SsGz0Kc7uhbCmxFt8MKzMMOQQ6MzcSqP6RKdDbD0H8fKLtp4gbtSbZFPj7yPXqEknzhtGVtOsjggTjBpkkYjx4UxCPbQi7nToGnoneaB8i2I+wJHblNzxVk213YKXDkrek8echG+LJey3GN/3P/TAUnfzVX5zpJiYwrUFCYjqljyUJrG12gZKXPXlJH8EVFLcoTD5YgAxPBQIF1xpJjPRWeSJ+j0DkcQIFmav3n2bq8iPHsdHeEoKDDlm5f9O29MXWLrr5E7/p2T24ZcD9smLGoqMxj2GdkUN+ErPoWuxs3IQQR4aXXjkrRTZcwU18Q/ZDWTgFrbgQ5xyO8Q40D3oWpXEtcmRIyOFLkj2IHSGcDeXIncj76pXcNZDBiWTryPqRodXq6AwUndBr3zdzydD1Z54B9w5BBxWx9lqbshlWNDmsiu0JrQS38lVeUzAiJOSRcUfJjjk8mLtLOhZN/iammypd+Po9WKksfMQyyOQjU/PDNuBaF4fc/Ocg4dHcwki5dT5TuVuvVGt5GeuazeXq8yX/z9JgcjLsmL80GBdZ4nrWfHLnc2Cu48W2l3m321B7TP05tg7oT9KjQOGv4qrOCyniW93Hco6ffrglBPr/05ORPsHtTMP4IFFSEJbkoek0DZLApCrIcpW76uJTL/RZNzlZ6+JqDArxWYjH5iP664t1wgT2OU0RuaupCADWTYHmHIMb9D+rOsgM= +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get all tags + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-bookmarks-in-the-list.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-bookmarks-in-the-list.api.mdx new file mode 100644 index 00000000..25eb8f9b --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-bookmarks-in-the-list.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-bookmarks-in-the-list +title: "Get bookmarks in the list" +description: "Get bookmarks in the list" +sidebar_label: "Get bookmarks in the list" +hide_title: true +hide_table_of_contents: true +api: eJzNWN9v4zYM/lcMvWwDjKY33LCD39piu3U/rsW1wx6KPDA2E6uRJZ9Ep00D/+8DJcd2Uid17wpsT00tUvz4iaRIbUSGLrWyJGm0SMRHpGhmzLIAu3SR1BHlGCnpSMSCYOFEcif+lI6cmMbCYVpZSWuR3G3EDMGiPasoF8ndtJ7GogQLBRJa5wVcmmMBItkIWpcoEuHISr0QscBHKErFnyTKTD2uF8XD/YefzePTT/kjkUk/sHVJXoStX2aijoXFL5W0mImEbIWx0FCwgAoCsZDsUAmUizo+al5XBfsFLhWx54Ody3AOlSKRhC879uagXGfQGUtXNkO7tfmlQrseNqqrYob22G5KFpJG7NTC3xJzUVlnjm6dBomX954ZoxC06LEQKN4Nlst55JAiMpFfbQPnOxelRhNqih6kUtEMI6lTVWWYbUPKoiuNdngSfTKEcUS57JRS0KyjwC4wmhsbOVNgF5Yngz7+T6C1ZDfbXgTFPdKn7EAw45j3H09P+c+uD1eze0wZJ+U+BaMMCNhCA4Y1oCyVTIE1JveO1QaO0/iNRCxKa0q0JIPRFnVPFKyFNYMlLNzLW8jseUTWsUgtAmF2RoOrhcnkXA4vx0JXSsGMI5pPrm7je4Qk2DSXK8wGIrmOxRxWhsvVoXWCxULqxQ0BVe5le13dcFWaonOCTUhVWWSaUGesNa1j4aqiACuf/Cm9/fba0Dh6Ao71ONJ9rX/jsAiZMbAARJDmmJ0PgmvrsxSxyKsCtJjWOyXgji02++/s5uV66WI0Xs39bXTcgbB6GIqSeunJr6wa9Gh80O7k/Ah5WcAC/x4ye0j4zDnkG3FUjKQWUbvc0Gu05pVS12wpJOBrVEuLqYUHhdlXKK9khuZVQGEl05FE51Soiy50XpRvwuw1cLaejzMAFeXGjmO1minpchwnnQHhdaMxDjhr/NWU8REKe8nqpUPuTLn/+LZcJHwkn4v+x1AyOlPZdGTODEPd2vhWrMDB4cH6X7cviPv0ZSPZvFMaii0Obanw02CBHUrzVzASCyef+ts2PezhFPhqmjtSOl/fgPVKL7V5GLg1vMK0bql9+ytv1DHzbfJbr9r0y/CWiZv+lxlojfayiY696iuaushyTYfna5IYKLachYfI8Vdqh39aDwp0rd5OY9drxnY6r/02a7g7avqPLqDa85l2885545xgXBofqRmAXh18XR+8s0/P1DUspGY3z1vR2tPx/vT9876dJ9RIG4rmptLZ2/XrqcmG26cCneNQeL6256nfoZPnI629PuUmE4lYhCjhkTkRE5453GQT5ul60qfJoV1t53rfAokNZJlF5+oJlHKyesdRCFYy6x58sxzY2k7WOVHpksmE7PpkCRaWiOUJlKXYH+duc4yaHSIz92PaH418FLDwgfSeJG6Y02bM6T1MtASxZZ9nLMZzgBfilPE/fjW2AEb4+z+3nkWp54bV2esA6d3J6clpb/xu8ZxdXw7iP7u+9BPjDnh2lu9r44j72mSzHR+PPcTstYxteB1/vQmO8002KRVIP/M07Ws48Tv/dMLHm7RvKN2hT2ORG0csttnMwPHtUdf8Ocy0HAqZdHzg3VC+xPXeA8kKVMU4/MPDAfntE8gY2fZN47jwQcr+w4eCwRMJXj17POi8m3aJNcz5QVe//9yUgh+iQ9a3d59e92125xKe3vi+zBH4QBlBWDxLUyz7UJ+VOobelpqPv9yK0NL2p/HdLOwParuQNpsgcWuWqOu6RUj8PwOs638Bja0zuw== +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get bookmarks in the list + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-bookmarks-with-the-tag.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-bookmarks-with-the-tag.api.mdx new file mode 100644 index 00000000..b06a9bcc --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-bookmarks-with-the-tag.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-bookmarks-with-the-tag +title: "Get bookmarks with the tag" +description: "Get bookmarks with the tag" +sidebar_label: "Get bookmarks with the tag" +hide_title: true +hide_table_of_contents: true +api: eJzNWEtv4zYQ/isCL20BIc4WW3ShW3bRbtOim6Bx0UPgw1gcW4wlUkuOnHgN/fdiqKcdOlF2A7SnOOI8vnlyhnsh0aVWlaSMFon4iBQtjdkUYDcuuleURZRhRLAWsSBYO5Hcijn/XcTCYVpZRTuR3O7FEsGivagoE8ntol7EogQLBRJa5wlcmmEBItkL2pUoEuHIKs1y8QGKMudPCpXMH3br4v7u3c/m4ctP2QORSd+xckWeZA7rSynqWFj8XCmLUiRkK4yFhoLPyZ/HQrE5JVAm6vhJ5boq2ChwqYi9N9g0iSuochJJ8+VA3QpyN+hzxtKVlWg7nZ8rtLuwUl0VS7RPSctVoWiCpB5+55YPlXXmSdFpQ/G87KUxOYIWIy80Hj5MlctV5JAiMpE/7dPmOxelRhNqiu5VnkdLjJRO80qijJT26WTRlUY7PIs+GcI4okwNTClo5snBrjFaGRs5U+CQlGdBG/8n0Hpnt2I/NIxHTl+wAY0ax37/8fyc/xzacLW8w5SaEsyVo0gCAWtowTAHlGWuUmCO2Z1jtkA4jRckYlFaU6Il1SjtUY9IwVrYMVjCwj0vQsnHGVnHIrUIhPKCgqeFkWqlwsex0FWew5IzmiNX9/k9gRJsmqktykAm17FYwdZwszp1TrBeK72+IaDKPa9v6BuuSlN0TrAKlVcW2U2oJXMt6li4qijAqi8+Sq8vXhua5p4Gx26a032jf+W0aCojcABEkGYo3wfB9f1ZiVhkVQFaLOqDFnDLGlv5B9I83ahcjMarlb+LnjagOT0NJVd6451f2Txo0fSkPaj5CfSqgDX+HVJ7ivjCOaTLQEhCOZJaRO0yQy/hWlV5fs2amgJ8CWtpMbVwn6P8CuatkmheBBS2Kp3o6IyK/MOQOs/St2n2Ejid5dMUQEWZsdO8Wi1z5TKcRi2B8LrlmAacOf5s2/gEhqNi9dRN7Sx4/vi2WiR8IF+L/keoGJ2pbDqxZsJQOx3fihU4OTxY/2v+DLkvX1YiVwNTKLc4tVWOn4INNlTmL/BILJz6MhbbzrCnS+Cr3Tw4ZbD1Fbxe6Y0294FbwzMs6t61r3/lTQoz3ya/jbrNuA13nrgZf1mC1mgv2+w46r6i7YtM1054vieJQLPlKjzlHH+lDvgXdZBgGPUOBrvRMHYweR2PWeHpqJ0/hoTq47MY9p33rXGCcWl8oHYBenHyDXPwgZyRqmtYK81mvu9Ja++Ot+dvH8/tc1hH2lC0MpWWrzeup0aGp6cCneNMeHx2ZKiXMNBzRGvPT5mRIhHrJkl4Y07EjEMw2/tlup6NfeTQbruV3s8/Yg9SWnSunkGpZts3nIJgFbvcQ2+PG1d1a3VGVLpkNiO7O9uAhQ1ieQZlKY53uXmGUSshMiu/o/3R0kcNFo7G6DXihj3a7jijN4nePazZFxmT8RLgibhe/I9fjS2AEf7+z9z7UOmVYXa2uoH05uz87Hy0e/d4Lq4vg/gvri/9ungAno3ly9o44qE22Xe745NvMEcDY59dz7zcNKbzRTYrc1B+5Wmn1ybit13RJd0DyhD0RSwy44iJ9vslOL466po/Nwstp4JUjgM+bOQb3B29jmwhrxiFf3U4Qd+9f0yh7R80niY+6bH/8JUgGI/GqkcvB4N1i6Gwwj4/aer3f7WN4IfolPbu4tO7sc4OVZMU/q7MEDieDKA5u0hTLMdIH/U5Rt73mY+/zEUzzo438cMiHC9ph4j2+4Zibjao63oAyP8zwLr+F/eXMGo= +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get bookmarks with the tag + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-current-user-info.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-current-user-info.api.mdx new file mode 100644 index 00000000..e2cbb08b --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-current-user-info.api.mdx @@ -0,0 +1,63 @@ +--- +id: get-current-user-info +title: "Get current user info" +description: "Returns info about the current user" +sidebar_label: "Get current user info" +hide_title: true +hide_table_of_contents: true +api: eJyNUz1v2zAQ/SvCmwnL7ajNQxukHRq0DjoYHs7SOWIsiQx5SmsI/O/FUUJiJx2iRRJ5H+/eezeh4VgH68W6ARV+soxhiIUdjq6ggxulkJaLegyBBynGyAEGQg8R1Q73kUPE3iByPQYrZ1S7CQemwGEzSotqt097g8DRuyFyRDXh83qtr+u+Pw6PXEvxx0qbmxQNCa1gULtBeBDNIO87W5NmlI9R0ybEuuWe9EvOnlHB5UIw8MF5DmLnpra5iIkS7PCAZDBQz+8vDIax6+jQMSoJIycD7sl2H4rsXE2dEnMRfXCuYxqQknLxNNrAjfJnG1wm7JM+Bj1L6xpUeOA8CSmTKJWXWPYM5Ts8K/VK9xg6VJioaQLHmErytnz+BINnClahZQKW65n5I42doEIr4mNVlhLOqxMFOjH7FXkP80aebcvFUqFwx2yJ70t8MWNBSunCCL9Ul7nzpR1eGNHOOkcOU4ZyEMzy8dWFnhTht9/bzJr6UdN16hnSp9V6tVYvWlH28YJnc3f7X/ybu9vi6MI1eB02GXgXpafsqNkSuGG5cn3eiLd1p1d7fnRz5vGF/0rpO7KDds8KTovOO2SdoTbQ1WpdFD2dpgNFvg9dSnr8NHLQddu/6py3zaBlatR9uwknPqPCpq7ZSzZEN2r3d4ukyr2Y7ubLFgZ0rdcbfXL15YqG80XtaZojtu7EQ0owCwjRfyS1+D9TYIbk +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Returns info about the current user + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-current-user-stats.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-current-user-stats.api.mdx new file mode 100644 index 00000000..483f1f86 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-current-user-stats.api.mdx @@ -0,0 +1,63 @@ +--- +id: get-current-user-stats +title: "Get current user stats" +description: "Returns stats about the current user" +sidebar_label: "Get current user stats" +hide_title: true +hide_table_of_contents: true +api: eJylVkuPm0AM/ivIZxSyPXJL1cduH2rVZlVVUQ4OccI0MENnTFqK+O+VB5IAG7S77WnZ+PXZ/mxPDVtyiVUFK6Mhhi/EpdUucIzsAtyYkgNOKUhKa0lzUDqyEALj3kG8gntH1sE6BEdJaRVXEK9q2BBasouSU4hX62YdgiVXGO3IQVzDi/lc/gwDf9r8oISDX4pTH6RFMIMQEqOZNIsJFkWmEhST6IcTuxpcklKO8sVVQRCD8Z4ghMKagiyrNqou85fGHHK0B9fT1mW+IQtNKF9v8GisYppUWNgkVUfaTsmXvi7XZR+U40nhrdqnmdqnExqbE/KX1dLLHss2U/pw1RPTb74qQOfomqSR7v0slZWsV63jzs3JaC1+TfHK5Kh0PwG0FisIQTHl7nHQW++gp+fYKr0XdIkp9RPQdR5O+gIsx993bfibucfJmC0E9lf1h6Yr8bDSz0yGh9aPp9Jhm4A1StRLT776luumRxel94uE1dEP5qOAU+W+EU3QJlXuo9Ey0RPS74T2OnerW1Pafy9kOrS+OH4iJ7z9hREe0SusPu1GyT6XrFj9D6qtj3UGNW7vqRf9yvfqfK7qMBk/iLi/d7j/D+ZqzJ/H3BF4bz85gmPl/loeLeHhyr0s2N46HS/Ph6tysJoezP9o2q+PTq+o0ipJISdOzRZi2JMvIMpkQCSXy0U5Rf56gdxFe5QTKWextBnEUON2a8m5JsJCRccbCOGIVuEma6vfidsLucMyY4ghZS5cHEVsq9kBLR6IihkWBYSjM7pMKeg8BGbnT/f7Tj9osUDTNL2D/VXOZxu5f7bPPZbIkodXg7hTkkL5jzfG5igI331beiIovTNiLlm3kG5m89lcaqg4Ew9nPIvPd1fxLz7fBTtjh+Al2SaEwjjOUV9oCm+JB6+T4FT6geP68ox48hunLYBcuqjI5Kw0YdvDuuv3Cny/QeggNfKB1yGkxrFI63qDju5t1jTy88+SrDyQ1peO+/dRCCnhlqwnyYEqiGGRJFSwp0ZW+hEev3ykh2cSvn29FCYPOzfqlPd+Wgi66vmu61ZjaQ6kmwbCDgTL/9AI5f8C4yOBiw== +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Returns stats about the current user + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/get-highlights-of-a-bookmark.api.mdx b/docs/versioned_docs/version-v0.27.0/api/get-highlights-of-a-bookmark.api.mdx new file mode 100644 index 00000000..02f4a0c4 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/get-highlights-of-a-bookmark.api.mdx @@ -0,0 +1,71 @@ +--- +id: get-highlights-of-a-bookmark +title: "Get highlights of a bookmark" +description: "Get highlights of a bookmark" +sidebar_label: "Get highlights of a bookmark" +hide_title: true +hide_table_of_contents: true +api: eJytVcGO2zYQ/RVhTi1ArJwiRQPdXKBNNzk0aLboYeEDLY0triWSGY42dgT+ezG0bEm7SjaHnCyTj8M3b94Me6gwlGQ8G2ehgLfIWW32dWP2NYfM7TKdbZ07tJoOoID1PkBxD78PSwE2CgKWHRk+QXHfwxY1Ia07rqG438SNAq9Jt8hIIQFCWWOroeiBTx6hgMBk7B4U4FG3vpElg6Zqjqd9+/nhzW/u+OXX+sjsyjfCwHCCXBjcVhAVEH7qDGEFBVOHCqxuBbQdQQqM5Oc11yCsCIN3NmAQJr+sVvIzl+KuxqwxgUWEURJQUDrLaFlOaO8bU2o5kT8EObaQoNs+YMmgwJPzSGzOl05ijlhNpE9ClrENL8eYJPhM0KggsCb+e7cLyJN927VbJNlHW31jt3SNo8VC2a4VF5ywadxnEDFF4D0hWlCwbToUX1S4013DUFyAUQHjkZdC2q5p9FYqKwWMCqxj/C6gWU69C0hfUaUk1IzVeoFInHnpfm6gqZpT7YasBs6J0fX+6W2b0b1/XWoP8emVE1tsYtp9vXr93J0X/2fWcbZzna1+nDNLVy1oHxW0GILeL+09SSJFGPEpkXSea1dBAfskW2rGAvKLyiHvR8FjPmu6gPR4GSEdNVBAr6uKMISYa2/yx1eg4FGTEXOkLIbts3QXJ9bMPhR5znS6OWjSB0R/o70HtdD9QwQZAFxj9n7AZ2cuUrrJ9Pso4g5dOZmBV6XkZskjwWQ2JZC0S/r401GrheG7/+6SnMbunByXrM+UXt2sblaTEXjls/5wu8h//eE22zmak5dkowLvArc62WIYli+M/ln4frTai0/GOX1pkdw32tjUnVLBfjDA2GZS6GLWc9NuUFC7wILv+60O+C81Mcrypw5JXp/N6IDkk8oE+a6g2Okm4Ddy+Omfwbw/Z1+jfBnQ9pSMJjOuAFBwwNP8pYmbqKBGXSElFmfAuizR8+ToswYVM10b5O0fd6BAzy30xDIp+iKtvj8j7twBbYxXliz/hWCM/wNdHrx1 +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Get highlights of a bookmark + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/karakeep-api.info.mdx b/docs/versioned_docs/version-v0.27.0/api/karakeep-api.info.mdx new file mode 100644 index 00000000..3e4eb827 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/karakeep-api.info.mdx @@ -0,0 +1,82 @@ +--- +id: karakeep-api +title: "Karakeep API" +description: "The API for the Karakeep app" +sidebar_label: Introduction +sidebar_position: 0 +hide_title: true +custom_edit_url: null +--- + +import ApiLogo from "@theme/ApiLogo"; +import Heading from "@theme/Heading"; +import SchemaTabs from "@theme/SchemaTabs"; +import TabItem from "@theme/TabItem"; +import Export from "@theme/ApiExplorer/Export"; + + + + + + + + + +The API for the Karakeep app + +
+ + + + + + + +
+ + + + + + + + + + +
+ Security Scheme Type: + + http +
+ HTTP Authorization Scheme: + + bearer +
+ Bearer format: + + JWT +
+
+
+
+
+ \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/remove-a-bookmark-from-a-list.api.mdx b/docs/versioned_docs/version-v0.27.0/api/remove-a-bookmark-from-a-list.api.mdx new file mode 100644 index 00000000..aa3dc73e --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/remove-a-bookmark-from-a-list.api.mdx @@ -0,0 +1,71 @@ +--- +id: remove-a-bookmark-from-a-list +title: "Remove a bookmark from a list" +description: "Remove the bookmarks from a list" +sidebar_label: "Remove a bookmark from a list" +hide_title: true +hide_table_of_contents: true +api: eJzNVMFu2zAM/RWBpw3Q4nTosMK3DOuAbsVQdBl2CHJgbCZWY1uqJKfJDP37QNmNkzYrdhiGnWzLj+Lj4yNbyMllVhmvdA0p3FKlNyR8QWKh9bpCu3ZiaXUlUJTKeZDgceUgncG1ct7BXIKjrLHK7yCdtbAgtGQnjS8gnc3DXIJBixV5si4CXFZQhZC24HeGIAXnrapXIIG2WJmSjxSpvNzuVtXD3cV7vf35rth6r7MLzq58hHD2qxyCBEv3jbKUQ+ptQxJqrBhQdgAJiusy6AsI8q+l/9CL8yKFxQA6ojHnCGd07cgxk7fjc34cd+KrFpmuPdVevDnqh3hAJzDPKaY+H4+fxz6yE1hawnwnau2Fqh872N/LcWhMqTLkuOTOcfAJifTijjIONFYbsl51tDOd03Mhg4SKnMPVqX9HWs26Gwb8PIQQSzohB/dbaDuowCUtdVPn/3tBMd4XOocUcirJMyIaIYWEO+KStjNrSPYzl7SDeQLwjNnN4wQ1toQUWsxzS86FBI1KNmcgYYNW4aLsiul/d0ousSk9pFB4b1yaJN7uRmu0uCYyIzQG5BO5pwWJ/gahl9F/X3q86LhACOFg+L+xxl3mwxWwF4wzcx0RxrMRQSD7l0/aVsgMP/+YRlVVvdQczlV3lM5G49H4YAT3fCY3Vyf5T26uxFLbY/JcbJBgtPMVRnf0w9pvPhwcdrz2ju5vB8v90crsNPC09YkpUdVMIbax7Z0wi/vKgYR0v7j2t/HpwS6ZSyi08xzUtgt09N2WIfDxfUOW1/B88EJ0TK4cv+eQLrF09EIxr257N78Wv+PdH2K9i5YrG/4CCWvaDWuXV+0/zHqgTpgHCQVhTjbW3gEmWUbGH4Q+2xNs5v2cfry8vpxeggQ8dvET18YEJ5m1bYeY6jXVIeyJev5mjiH8AkTPj4c= +sidebar_class_name: "delete api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Remove the bookmarks from a list + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/replace-asset.api.mdx b/docs/versioned_docs/version-v0.27.0/api/replace-asset.api.mdx new file mode 100644 index 00000000..53865886 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/replace-asset.api.mdx @@ -0,0 +1,71 @@ +--- +id: replace-asset +title: "Replace asset" +description: "Replace an existing asset with a new one" +sidebar_label: "Replace asset" +hide_title: true +hide_table_of_contents: true +api: eJy9VE2P4zYM/SsCT11AO54ttujCt2yxBaYFisE0ix6CHBibiTWxJa1EzyQ19N8Lys7XTDpAgUUvgSOR1HuPjxygplgF49k4CyU8kG+xIoVW0c5ENnajMEZi9Wy4UagsPStnCTQwbiKUC/js3LbDsI2w1BCp6oPhPZSLAVaEgcKs5wbKxTItNXgM2BFTiDkgVg11COUAvPcEJUQOxm5AA+2w860cGTJ1u9tvuufHTz+73d8/NTtmV30SBIZzyAHBXQ1JQ6BvvQlUQ8mhJw0WOwlanYI0GOHqkRtI+rvBmIlOb2LAKeICwHIMp8ifXb0XFJctmTeUVR/bwE6FqUfSEdBQOctkWRLR+9ZUKInFY5TsK+Tc6pEqBg0+OE+BDcWcO2F7pUK64LM4Bi5TGq+idzaORX68/fiawB9OTRjV+4OZMB5o1Cr2VUUxrvu23Yt4H68VOfRYWcdq7Xpbfz/qlavpCm8NHcWIm2t3LzTJFU7xWZqcz42rpdN9flX6XUJxsGIshpMrU5GlicUwCZxAxik8HYalDy2UMGBdB4oxFehN8fQBNDxhMLhqpzaO16OAa+xbhhIaZh/LouCwv9liwC2Rv0HvQV/x2lRBubXihtTvU7wasUBK6WzO/xSJx5fPp/2ol7wsPHKYTGEOAj19/OpCh4Lwt7/mWVRp3cNpGr4c5u/Mn2f9MXbt5E40Ggl8uLm9uT2bySP62f3dVbaz+zu1duGSqkiTNHgXucNspWmAj+tRwLysN5z8+J/26KgU044L36Kx8nRu9jA5ZnFcXhE0lBebbDSNHB/nUkPjIkvaMKww0tfQpiTH33oKspmXJ89kZ9UmyncN5RrbSG/Q+uFhMv079W/Ip0O0+2zNtpd/oGFL+8stLJv3f3z5IE9aJg0NYU0hkx9vfxkfej+XGqfsV1tFQI8Zs6oiz2/GLs82wP3Xubh+2vBd3jgQ8Bl0/s1AXeadhymfDdCi3fR5A8FYUmYEL0fsxUhlUlelGIYxYu62ZFM6KsPyX3RJ6R8BPcUh +sidebar_class_name: "put api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Replace an existing asset with a new one + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/search-bookmarks.api.mdx b/docs/versioned_docs/version-v0.27.0/api/search-bookmarks.api.mdx new file mode 100644 index 00000000..e15d4156 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/search-bookmarks.api.mdx @@ -0,0 +1,71 @@ +--- +id: search-bookmarks +title: "Search bookmarks" +description: "Search bookmarks" +sidebar_label: "Search bookmarks" +hide_title: true +hide_table_of_contents: true +api: eJzNWEtv20YQ/ivEXNoChOT0qJsSpK1bNDZqFz0YPIzIobjRcpfehxxF4H8vZkmRlEzZVGKgPVnmzuOb587sHjKyqRGVE1rBAu4ITVpEK603JZqNhRgcri0sHuB99y2JwVLqjXA7WDzsYUVoyCy9K2DxkNRJDBUaLMmRsYHApgWVCIs9uF1FsADrjFBrqGMw9OiFoQwWzniKQWHJBI8Qg2BAj57MDur4vJAYSPmSEaJNIQ4GAQuWtEWVEsPNKEcvHSwGn4+U5yhtr91q425MRmYCCuXLFZmXpElRCneJPU44yR8+eGP1i6LThuJ12SutJaGCgSsafx+H/zqPLLnI6Sicdnnwg41SrRwpFz0JKaMVRUKl0meURUJFrqDIkK20sjSLPmlHceQK0TOlqJhHollTlGsTWV1Sn2WzURv/J9A6Z7diPzSMJ05P2IBGjWW//3x1xX+ObbhZfaaUcboiALNNtRmyXrqgqkXFrFhVUqTIrPPPlvlH4qqDRIihMroi40Sjva/fnhSNwR2jdlTa10WIbLReU0PoKFu60dNSZyIX48cxKC8lrji1OYR1l+gTKNlPYkvZSErXMeS41dyOzp07XK+FWt85dN6+rq/vKNanKVnugjkK6Q2xm0hlzJXUMVhflmjE1xCltxevtJvmngbHbprTQz9/47RoSmTkAJ3DtKDs/Si4rnMLiKHwJSpI6qNe8MAaW/lH0gLdoFy0ops83DYvG9CcnocihdoE53sjRy2anrRHxT+BXpS4pr/H1J4jXlpL7nokJGM5khoiZQvtLuHKvZS3rKkpwEtYK0OpwSdJ2Tcwb0VG+iKguBXpREcXrpQf+tR5lb5Ns0vgHCyfpgC9K7SZ5lW/ksIWNI06Q0e3Lcc04MzxZ9vGJzCcFGugbmon4UHk+2rR0RcXajH8GCtGq71JJ9bMONSDju/FipwcAWz4df8KeShfVpLlPdNYbnFqC0mfRhvsWJlf4JEYrPg6FNsOs+dL4Jvd3Dult/UNvO7VRumnkVsjMCR159q3v/ImhZlvk98G3WbYhg+euBt+WaFSZK7b7DjpvtD2RaZrJ7zQk2Ck2XIVnnNOuFJ7/Ek9StCPekeD3WAYO5q8Tses8emonT/6hOrik/SLz2HVBMal6ItrN6GLk2+4xw7kDFTd4looNrNfb+s6+KMkV+gMFrBuHIy83sK8Ezlvpne2k8z2sOqGqQH2mGWGrK3nWIn59h0HDo1goCGl2uNmQzispoVzlV3M587sZhs0uCGqZlhVcLoK3RcUtRIinYdN4o+WPmqwsA2DLf2O14Z2Mxjs6p03WXNITSbj0TkQcZaFH79oUyIj/P2f+xASoXLN7Gx1A+nd7Gp2NVhdOzzL2+tR/Mvb67BtHYFnY/mK09bxKLjYH1avkWeJk+Gq60+jTxiNmdzq55VEEZaCdr5r4nqcKm1kkxgKbR2f7vcrtNxV65o/N0sfxzsTlqN6Zmsd4vrxrzYxf4rOQdrQrn372KL0fB62+Wc6GrrhK8UU+sM7xBTa7mHhZeKzxv6H2/oLnn22wffWJX2FhkesGApC9i0HueFepilVQ65nGzpL6drGrx/voZnshkvpcWUN9xVUu4Hs/b6huNcbUnUNBxMc/w81t+x/AQnz0gw= +sidebar_class_name: "get api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Search bookmarks + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/sidebar.ts b/docs/versioned_docs/version-v0.27.0/api/sidebar.ts new file mode 100644 index 00000000..bfc37dce --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/sidebar.ts @@ -0,0 +1,276 @@ +import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; + +const sidebar: SidebarsConfig = { + apisidebar: [ + { + type: "doc", + id: "api/karakeep-api", + }, + { + type: "category", + label: "Bookmarks", + items: [ + { + type: "doc", + id: "api/get-all-bookmarks", + label: "Get all bookmarks", + className: "api-method get", + }, + { + type: "doc", + id: "api/create-a-new-bookmark", + label: "Create a new bookmark", + className: "api-method post", + }, + { + type: "doc", + id: "api/search-bookmarks", + label: "Search bookmarks", + className: "api-method get", + }, + { + type: "doc", + id: "api/get-a-single-bookmark", + label: "Get a single bookmark", + className: "api-method get", + }, + { + type: "doc", + id: "api/delete-a-bookmark", + label: "Delete a bookmark", + className: "api-method delete", + }, + { + type: "doc", + id: "api/update-a-bookmark", + label: "Update a bookmark", + className: "api-method patch", + }, + { + type: "doc", + id: "api/summarize-a-bookmark", + label: "Summarize a bookmark", + className: "api-method post", + }, + { + type: "doc", + id: "api/attach-tags-to-a-bookmark", + label: "Attach tags to a bookmark", + className: "api-method post", + }, + { + type: "doc", + id: "api/detach-tags-from-a-bookmark", + label: "Detach tags from a bookmark", + className: "api-method delete", + }, + { + type: "doc", + id: "api/get-highlights-of-a-bookmark", + label: "Get highlights of a bookmark", + className: "api-method get", + }, + { + type: "doc", + id: "api/attach-asset", + label: "Attach asset", + className: "api-method post", + }, + { + type: "doc", + id: "api/replace-asset", + label: "Replace asset", + className: "api-method put", + }, + { + type: "doc", + id: "api/detach-asset", + label: "Detach asset", + className: "api-method delete", + }, + ], + }, + { + type: "category", + label: "Lists", + items: [ + { + type: "doc", + id: "api/get-all-lists", + label: "Get all lists", + className: "api-method get", + }, + { + type: "doc", + id: "api/create-a-new-list", + label: "Create a new list", + className: "api-method post", + }, + { + type: "doc", + id: "api/get-a-single-list", + label: "Get a single list", + className: "api-method get", + }, + { + type: "doc", + id: "api/delete-a-list", + label: "Delete a list", + className: "api-method delete", + }, + { + type: "doc", + id: "api/update-a-list", + label: "Update a list", + className: "api-method patch", + }, + { + type: "doc", + id: "api/get-bookmarks-in-the-list", + label: "Get bookmarks in the list", + className: "api-method get", + }, + { + type: "doc", + id: "api/add-a-bookmark-to-a-list", + label: "Add a bookmark to a list", + className: "api-method put", + }, + { + type: "doc", + id: "api/remove-a-bookmark-from-a-list", + label: "Remove a bookmark from a list", + className: "api-method delete", + }, + ], + }, + { + type: "category", + label: "Tags", + items: [ + { + type: "doc", + id: "api/get-all-tags", + label: "Get all tags", + className: "api-method get", + }, + { + type: "doc", + id: "api/create-a-new-tag", + label: "Create a new tag", + className: "api-method post", + }, + { + type: "doc", + id: "api/get-a-single-tag", + label: "Get a single tag", + className: "api-method get", + }, + { + type: "doc", + id: "api/delete-a-tag", + label: "Delete a tag", + className: "api-method delete", + }, + { + type: "doc", + id: "api/update-a-tag", + label: "Update a tag", + className: "api-method patch", + }, + { + type: "doc", + id: "api/get-bookmarks-with-the-tag", + label: "Get bookmarks with the tag", + className: "api-method get", + }, + ], + }, + { + type: "category", + label: "Highlights", + items: [ + { + type: "doc", + id: "api/get-all-highlights", + label: "Get all highlights", + className: "api-method get", + }, + { + type: "doc", + id: "api/create-a-new-highlight", + label: "Create a new highlight", + className: "api-method post", + }, + { + type: "doc", + id: "api/get-a-single-highlight", + label: "Get a single highlight", + className: "api-method get", + }, + { + type: "doc", + id: "api/delete-a-highlight", + label: "Delete a highlight", + className: "api-method delete", + }, + { + type: "doc", + id: "api/update-a-highlight", + label: "Update a highlight", + className: "api-method patch", + }, + ], + }, + { + type: "category", + label: "Users", + items: [ + { + type: "doc", + id: "api/get-current-user-info", + label: "Get current user info", + className: "api-method get", + }, + { + type: "doc", + id: "api/get-current-user-stats", + label: "Get current user stats", + className: "api-method get", + }, + ], + }, + { + type: "category", + label: "Assets", + items: [ + { + type: "doc", + id: "api/upload-a-new-asset", + label: "Upload a new asset", + className: "api-method post", + }, + { + type: "doc", + id: "api/get-a-single-asset", + label: "Get a single asset", + className: "api-method get", + }, + ], + }, + { + type: "category", + label: "Admin", + items: [ + { + type: "doc", + id: "api/update-user", + label: "Update user", + className: "api-method put", + }, + ], + }, + ], +}; + +export default sidebar.apisidebar; diff --git a/docs/versioned_docs/version-v0.27.0/api/summarize-a-bookmark.api.mdx b/docs/versioned_docs/version-v0.27.0/api/summarize-a-bookmark.api.mdx new file mode 100644 index 00000000..07ec3243 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/summarize-a-bookmark.api.mdx @@ -0,0 +1,71 @@ +--- +id: summarize-a-bookmark +title: "Summarize a bookmark" +description: "Attaches a summary to the bookmark and returns the updated record." +sidebar_label: "Summarize a bookmark" +hide_title: true +hide_table_of_contents: true +api: eJytVUuP2zgM/isGT1tAiNNFFy18Sw8FpnvYwc4seghyYCwm1sSWXIlOkxr67wvKzmvGfRzmZFvi4+PHj3QPmkLpTcvGWShgwYxlRSHDLHRNg/6Yscu4omzt3K5Bv8vQ6swTd96GdNG1GpnkrHRez0AB4zZAsYSPo0uAlYJAZecNH6FY9rAm9OQXHVdQLFdxpaBFjw0x+ZAMQllRg1D0wMeWoIDA3tgtKKADNm0tR4aMrg/HbfPt6cN7d/j+V3VgduUHQWA4mZwQ3GmICjx97YwnDQX7jhRYbMRofTFSYISFFrkCQeUptM4GCoLkz/lcHreEPV4xcKbom+HqxB8oKJ1lsizO2La1KVGc86cgESZqdesnKhkUtN615NkM+Y1+yUdUUHqS7AuevG2cNhszfa3AdnWNa6FKGIln4n7DEn1ZmT1dY1o7VxNaSbvBvZN2/+iecbs1dvvAyF34dT4FZLtGNBW6sqQQQFKYuvMkNJHV4rWKCgbWzfdE8euHt45/j55T939teyPMpXT5uqc3Hbxi/Ybi53xO07CKUZK9m797KePToGTWcbZxndWvp9vS6QnORJsUAm6n7p5xkiJc7FMhyZ8rp2VeXUhpZWwLyE9zGPL+MtsxP3EioQL5/WnXdL6GAnrU2lMIMcfW5Pu3oGCP3kijUhXj9UDdBruaoYCKuQ1FnrM/znbocUfUzrBtQU2siTFC5jZpb/492mcDFogxXq3JByF3yHy9LM9MSWapI5nJbCUjUOPLJ+cbFISfvzwmOo3dOHGXqgdIb2fz2fxqV57xLO7vJvEv7u+yjfO34KXYqFIHGkyyGLfqw4ntDM+L8XnY/iKxV/rzDOQwHThvazRp16T+9qM6lud1L2NS3Oz+i0BWCirRVLGEvl9joP98HaMcf+1Ipnq5usgjiUibIO8aig3WgX5S6B//jsp+k/0I8XiI9phUWHfyBQp2dLz9X0XZSRWhJp9QDAaLsqSWr1xfTK8o7Tw99/88PMpquRXYM0Gl8JO4+n6weHQ7sjGeYbJ8C8IY/wc5POmb +sidebar_class_name: "post api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Attaches a summary to the bookmark and returns the updated record. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/update-a-bookmark.api.mdx b/docs/versioned_docs/version-v0.27.0/api/update-a-bookmark.api.mdx new file mode 100644 index 00000000..a6947c6d --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/update-a-bookmark.api.mdx @@ -0,0 +1,71 @@ +--- +id: update-a-bookmark +title: "Update a bookmark" +description: "Update bookmark by its id" +sidebar_label: "Update a bookmark" +hide_title: true +hide_table_of_contents: true +api: eJytVk2P2zYQ/SvCnFpAtb1Figa6OUGLbj/QRbJBD4YPI3FscS2RCkl5rQj678FQsj52lY2Arg+GSA7J4Zv3ZqYGQTYxsnBSK4jgUyHQURBrfcrRnIK4CqSzgRQQgsOjhWgH77pFC/sQLCWlka6CaFdDTGjIbEuXQrTbN/sQCjSYkyNjvYFNUsoRohpcVRBEYJ2R6ggh0AXzIuMpSVJkl+qYPz68/VVfvvySXpzTyVv2QDpvcvXgVkATgqHPpTQkIHKmpBAU5mwUD0YhSH5cgS4F9op3kHXvtKjYlykE9ykFAh0GTgelh2MV/KuyKnApBQdJmbBBpcvgEZUbbAJFJHgYU1AYfZaCxApCSLRypBxfg0WRyQT5mvWD5btmANHxAyUOQiiMLsg4SdbvNUkqz/zG3jLWOiNUjMABz5qj8K11W+Y5mmoOd1VmGcaMKoPXhKC0o+eGTQ/+944IIcfL36SOTIKbzWbThJAYQkdi6xZ5UJpszu6gTY4OIiiNZH8mUVtwLJYu1WaRaVHGmbQpLbPm8N91O8TiHf9oIQ9y4QZHl2XYobXk3g+c+84G/2M92EIr21Lt581mXhQt0UWfHF6P3XIGhZdp04SQdwAuZNVC+jKG/0trDo9HqY4fHbrSLpELqTLntGrLJCFrmekos9IQw0RK8K59L2L5xUP8+sfP634GnuXJZJKbd+CLyBDTSQRHqE8gfornPAz7lsZvNm+eM/daKwKlXXDQpRKvx9tEi/lcmZO1eJxbe4KJP2Gw33eCzMmlWrQlK0n5Xi5dEayv2rPreqhvDcNC5nytsj6BQo1CGLK2WWMh1+cbCOGMRnJ82pLSLreIHbDMOLemzhU2Wq+dqVYnNHgiKlZYFBDOJITuhEAffG38q7MPWl+gaZpRg/CRMW1vHrcJPUB8M7/Dm7GkvBGE3cfv1+z/53/3HkWO1Yehjv927R/GtbJVwFix7UxP4RF1Pf2H8bXV6CdGyWiYbJHuh1OI+ulr5RlmRgVmtHtaR6YLQ7kY+eirwuieSfIf0VGqg2ZkmCGtbzerzWozemYfu+3d7Wyst3e3wUGbaaCZGFwutXU5euV0vVfXRuK4Vjyp170EX+45W3LwS9dFhtKn2K5BaDWx6xs9zg7RqOvbh5Bq69ikrmO09MlkTcPTn0vi6O/2gyS8cIS0/C0gOmBm6QWff/jQifjH4FtedpOoKq+8rOQRhHCiatqdNpx+U0LBdNjVnUEXx5/u+ZjhgGfpqgmvO7ZJQoV70XY/Si132/v3f7C+ui4498kMDD5C6P+9t9o/3svWz9WQoTqWPrlBe2jTNVfjejgVr3/WLB513Vrc6xOppunhcTxmZJrmK4OCX9A= +sidebar_class_name: "patch api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Update bookmark by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/update-a-highlight.api.mdx b/docs/versioned_docs/version-v0.27.0/api/update-a-highlight.api.mdx new file mode 100644 index 00000000..e137a989 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/update-a-highlight.api.mdx @@ -0,0 +1,71 @@ +--- +id: update-a-highlight +title: "Update a highlight" +description: "Update highlight by its id" +sidebar_label: "Update a highlight" +hide_title: true +hide_table_of_contents: true +api: eJytVcGO2zYQ/RVhTi3A2k6RooFubtAi2x6ySB30YOhAi2OLa4lkyNGuVYH/Xgwl2/Kusi3Q+CRrnmbePL4Z9qAwlF470tZADp+dkoRZpQ9VrQ8VZbsu0xQyrUAAyUOAfAsfztEAhYCAZes1dZBve9ih9OjXLVWQb4tYCHDSywYJfUiAUFbYSMh7oM4h5BDIa3MAAXiSjav5lUat6lN3aJ4e3v1sT3//VJ2IbPmOKWhKkAuFOwVRgMcvrfaoICffogAjG0ZVE5QAzQ06SRUwL/4EA/1iVcdsbmXYVJgpSTIjm7VJkkX20dRdRhVme421Clln2+xJGrpiMoOo+O8OM+fto1aoFiCgtIbQEJeRztW6lFxm+RC41owkdveAJYEA561DTxoDR0tbWz+rnGkbPpcO69o+AffG/R48ogEBu7pFKGL6cSw4a8KQ8sfVar75oSF1NcK3a2Nn7bGR/ninXvYSBQSSnj7u9wFpEjdts0PPcTTqlej/00iAwr1sa4L8DIwCCE80l9K0dS13bEc2XRRgLOF/Aur51tuA/iuqlB75PNYzROKN/7dTfW/VnGo3djVyTowu9afVipmRg8FIb1dvX3rnAsqMpWxvW6O+5QCoGX2jgAZDkIe52DNtUoYrvhhnokGqrBq2Q1lxXd4SOSwv9g/LfrJMIiuL/vG81FpfQw69VMpjCHEpnV4+vgEBj9JrPvlEfwwPop1tVhG5kC+X5LvFUXp5RHQL6RyImakcM2R2nxbRHyM+G7jwuUz28Z+s6jhyk618kYgrcx8JBvkI4llID79Z30hm+Ptfm6Qjn9an69L89byuL4tpMjLa7C1HWKGB/pvFarGaLPAL9/X93Wyv6/u7bG/9baMsTBTgbKBGJu+Mm368t+TNwrpJ2l9d+C+33CAPz8fS1VKbNJp8wv3oi+31YgkgIJ9eM4WAygZiUN/vZMDPvo6RX39p0fMlWVxtkcyjdOBnBfle1gFfof3dp9HK32df4zm+lKZL7uOtlgMIOGL37D6MRRRQoVToE40B8X4o9sOG81wzvJjaKM5frMsSHb2KLSYTdr/evP/AJhvv3SbNNHiZdrJ8Guja1H3ybnrXQy3NoU0zDkNStqS8dfQzB6e2ZgXp+wGxsUc0MV70If7PysT4D5kaH2M= +sidebar_class_name: "patch api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Update highlight by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/update-a-list.api.mdx b/docs/versioned_docs/version-v0.27.0/api/update-a-list.api.mdx new file mode 100644 index 00000000..fa31e48d --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/update-a-list.api.mdx @@ -0,0 +1,71 @@ +--- +id: update-a-list +title: "Update a list" +description: "Update list by its id" +sidebar_label: "Update a list" +hide_title: true +hide_table_of_contents: true +api: eJytVk1v4zYQ/SvEnFqAtZ1iF13o5i5aNO0CDbZe9GDoMBbHFhOJ1JJUYlXQf18MJVtyrGRRID4YIjmaj/feDNWCIp85XQVtDSTwpVIYSBTaB7FrhA5eaAUSAh48JFv4pH3wkErwlNVOhwaSbQs7QkduXYcckm3apRIqdFhSIOejgc9yKhGSFkJTESTgg9PmABLoiGVV8JYmrYpjcyif7j/8Yo//vc+PIdjsA0fXIZpw9FsFnQRHX2vtSEESXE0SDJZsUPQGEjQXU2HIgbNha/LhV6sazuGy5E1OQmFAEayoY/kL8bcpGhFyEntNhfKisbV4QhNGG2GIFC93JCpnH7UitQAJmTWBTOAwWFWFzpDDLO89x5oBwu7uKQsgoXK2Ihc0eT7t67mGq9TmE5kDA30jocTjebVadfKysuu3TV0UuGMoe9Qm3lYX3t5Hbzqbc9NFdskw0N+N0Un4WpNrvlcLO613hc4mhjtrC0IDXfwxi76yxvcA/bxazVPZ06OihN+ODz1TaydfoOn/EvFmUPcGM01m6pK7t0RTYwESfIkucBsr2mNdBEhOZ68RdhXvFcqmLbqFOEMiWEOpk8LObtLLRoee9Xerd9dE87kwNoi9rY16O5ozq+b5LMl7PMydPas0ehjt00G7JYXcqn4mZXksn3UPS5apX7b94OqYGnKPp7FZuwISaFEpR953S6z08vEGJDyi08xETHo47lE60ZmHUPlkuQyuWTygwweiaoFVBXKmZwYPwu7j0PtrsBd9LkzEZOL/w1j2kadz/wwMR+Y6ohlrIhqBHB5+t65EzvDPfzcRPebo8zigfztdCKchOOrvMvHzdt8743psmXFv0PTEaJDuqf/M3nJIhr53f7NYLVaTu+cMyvrudhbE9d2t2Ft3iSAjzo1ifSjRTIoaLlo8zalnA+Os55dv5B7tQMewrArUhuNEwbSDuLbxOvQgIRnuxVRCbn3go7bdoacvrug63h7w2aajtqIClfb8rCDZY+HplTx/+Dx0wY/ipeyGTTRNlHBR8wokPFAz3t1d2knICRW5mEF/+LGP89OGXYwvX/V6J09vrLOMqvCqbTrpy7v15uMfLNLhG6GMkwAcPoGM/zFTGwuP2o97LRRoDnWcDNA7ZUnjZUc864BY1iwWbdtbbOwDma47QxN4zch03Tdsok9Y +sidebar_class_name: "patch api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Update list by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/update-a-tag.api.mdx b/docs/versioned_docs/version-v0.27.0/api/update-a-tag.api.mdx new file mode 100644 index 00000000..73362456 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/update-a-tag.api.mdx @@ -0,0 +1,71 @@ +--- +id: update-a-tag +title: "Update a tag" +description: "Update tag by its id" +sidebar_label: "Update a tag" +hide_title: true +hide_table_of_contents: true +api: eJytVMGO2zYQ/RViTgnA2k6RooFubpCg2x66SB3kYOgwFscWdyWRIUe7VgX9ezCkdu3deoMc4oNtcZ44b2bemxEMxSpYz9Z1UMBnb5BJMR7UblCWo7IGNDAeIhRb2MhvqSFS1QfLAxTbEXaEgcK65xqKbTmVGjwGbIkpxASIVU0tQjECD56ggMjBdgfQQEdsfSNHlqxpjsOhvb9597s7/vdbfWR21TtJbjlBNni4MjBpCPS1t4EMFBx60tBhK3FOcQ1WCvHINQgXAVPkP5wZhMHTcjc1KYOMip3qU+kL9U/XDIprUntLjYlqcL26x45PGNURGXnckfLB3VlDZgEaKtcxdSxp0PvGVihpljdRcl1og9vdUMWgwQfnKbClKNFczvNmTekj9UTvupihv65Wl4vKRI0M8ucRs+YCLf0i3/NBbSHpKEHLXMjb1dsL3PGgOsdq7/rO/DzmlTOXKGpoKUY8/AD9dMMJX87TaIlrZ7Leqlryiu4KWIpjlmOS5ARimHD3YIc+NFDAiMYEinFaorfLuzeg4Q6DxV2TKc/h3KI99g1DATWzj8VyyWFY3GLAWyK/QO9BX9DAfINy+yTnv2e8ylxEUGdO/lc6mTOf+/mxLZJZ6kgwKGYQ6PnPRxdaFIZ/fdmk3smEPp2s9+HB6A/yPpuB7fZOAtKgzP7NYrVYnTn/kfr6+upiqevrK7V34Wmd0pdJg3eRW+zOUs9LDmd3PLluPEnuxWWYO8J05KVv0HaSJQ11nMe/zQtTQ5F3UqmhdpElMI47jPQ5NNMkx197CrJFy9P0k0aMjfLfQLHHJtJ3SL76NKv0tXqJ23yI3ZBE1vTyBBpuaXhcm1M5aagJDYVEIMfe5zS/bOSG07v/s+KkH95YVxV5/i62PLPN9Xrz/k9R0bye22RUCHgPOn0noi7VncSZzkZosDv0ybiQLxXN4VPJPpNoKutiK8YxIzbulrppOnVGnqUz0/QN/t1xKA== +sidebar_class_name: "patch api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Update tag by its id + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/update-user.api.mdx b/docs/versioned_docs/version-v0.27.0/api/update-user.api.mdx new file mode 100644 index 00000000..0767763f --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/update-user.api.mdx @@ -0,0 +1,71 @@ +--- +id: update-user +title: "Update user" +description: "Update a user's role, bookmark quota, or storage quota. Admin access required." +sidebar_label: "Update user" +hide_title: true +hide_table_of_contents: true +api: eJzFVk1v4zYQ/SvEXNoCjD92txfdvF+A20u6TdCDYRRjcWxxLZEMSSXrCvzvi6Fkx7GdPRRZRAdbIofDN28eZ9iBolB67aK2Bgq4dQojCRRtIP9LEN7WJMXK2m2DfivuWhtRCutFiNbjhvqRkZipRhuBZUkhCE93rfakRiAh4iZAsYBsAEsJgcrW67iDYtHBitCTn7WxgmKxTEsJDj02FMmHbBDKihqEooO4cwQFhOi12YA8wX1TkZh/FHYtYkUZvIhWtDkakEDfsHE1r+epf6dv3kKSsMcJRfQtSTDY7E3mCiRo9uwwVsDI2JpCfG/VjvGU1kQykV/RuVqXyFDGXwPjuQDcrr5SGUGC89aRj5oCzzLBl8Ij0zbMG4MBCdjTlyTsc/EXE3+0UptIm2xr2rrGFbvtw2q00Q17myQJQ97+5+qVtw+B/AePD7U2m0+GLdWRn5W1NaE585PSacZuOUd9goTCiMdZ2tMyhH0W9HQymZyG8vtk/yR+OF/BWRN6mt9MJvz3LAQlQpvFu27regfypdI7eL3AUHoiwMXBctmjf3cJ8HtUYpChuBJzc4+1VkIb18bMIR/MEo2xcc+sfTBikNALRUTeW3+u2NNwerNDMNML7BtsY2W9/o+UuBJcBMjEAdahhrw28LfnwD9bv9JKkWHUl+rea2N+94zUWRdr25pXBZgkNBQrq7i2ttkjV9gCxvmwj1mtYdz1RTgBNwx/v28Hra+hgA6V8hRCGqPT4/spSLhHr7naZFDDdM/CGts6QgFVjC4U43H0u9EWPW6J3Aidu9hKBg/7fvLnYC96LJBSOupkfzNX/c7H/ezACe/McWQzrgDZiKtafvlsfYOM8I9/bjJxnIMvj83m0wtVRe5na8tumM4+1uloMppwl9Yxez4EOrueXyRmdj0Xa+ufssIsJgnOhthgls/QSYfbxFCAnng7aqA/4dLREx/pWxy7GrVheFk73aC2xYHErDeQUAxtfymhsiGySdetMNCtr1Pi4buWPF9blo9yy6JUOgxtcI11oB8E+uuXAeRv4jmUwyCaXVZ13fIXSNjS7vFqkvgiUBEq8hlBP/mh3+fqhl08Lj473knuV8zKklz8oe3y6Lhe395k1fUXoMYqXuLxAWT+zThtDru/2vBYBzWaTYsbtu1dssbx6RE5ORI5qItMdF1vcWO3ZFI6EBP5m3lJ6Tty27rt +sidebar_class_name: "put api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Update a user's role, bookmark quota, or storage quota. Admin access required. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.0/api/upload-a-new-asset.api.mdx b/docs/versioned_docs/version-v0.27.0/api/upload-a-new-asset.api.mdx new file mode 100644 index 00000000..5d2f6b37 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.0/api/upload-a-new-asset.api.mdx @@ -0,0 +1,71 @@ +--- +id: upload-a-new-asset +title: "Upload a new asset" +description: "Upload a new asset" +sidebar_label: "Upload a new asset" +hide_title: true +hide_table_of_contents: true +api: eJyNVE1v2zAM/SsGz26c7uhbtqFANmAL0BQ7BDnQNlOrsS1VotNlhv77QMlNnDQDdpMlfrzH98wBKnKlVYaV7iCHJ9NorBJMOnpL0DliSIHx2UG+gYV8O9im4KjsreIj5JsBCkJLdtFzDflm67cpWHrtyfFnXR0hH65arGtKKmRMWCelJWRKuKbYLHlTXM8ghVJ3TB1Ldts3rAxaznbatneSKteurKkNJz4aghx08UKlwDVWG7KsyMnrTjUUohTLAR5UQ9K6oKQPZKkC7yNmZakSoiFn6328d0Z3Lhb7NJ9/JPSVGFXjEix0z4FLpFWdBjhhg8Y0qkRJzV6c5P8/lVBuWU0CHVvVPYM/tViH+xvvTv2ZPnR9W5CVB+H6A9tbWVdTeW9/2WwsPSm0TU/DDo4BHyfZEte6ghyMdoEcimMgw2grcZU9kHXBVL1tIIcBq8qScz5Do7LDPaRwQKuwaMaJxOeoyQ77hiGHmtm4PMvYHmd7tLgnMjM0BtIbThwrJHoXlPs+xicRi0Cf2P1RhIqdp6Y/DU46C48QBvkYBOl4eNC2RUH47dc6TFd1Oy3pwjpCup/NZ3M4D/CEZ7Fa3sS/WC2TnbaX4IWsT8OcWwwW64LCt3/vi6LD2az/WAaRKtNvzkyDqpNOQa1hVHR0SlgUtUidb2AYCnT0ZBvv5fq1JyvLY3vWM+yOFGrCimywwJ6OkMOXCOduNNsBm17639oKPn1PWpQlGZ6Ef/jtRNaTIVc/H9ei0rivWl1JjhQOddPzMYLES9mvZA7gxyfsjhMUwxAj1npPnfeQjnBZvsHLxvkLeuzpPg== +sidebar_class_name: "post api-method" +info_path: api/karakeep-api +custom_edit_url: null +--- + +import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint"; +import ParamsDetails from "@theme/ParamsDetails"; +import RequestSchema from "@theme/RequestSchema"; +import StatusCodes from "@theme/StatusCodes"; +import OperationTabs from "@theme/OperationTabs"; +import TabItem from "@theme/TabItem"; +import Heading from "@theme/Heading"; + + + + + + + + + + +Upload a new asset + + + + + + + + + + + + + + + + + + \ No newline at end of file -- cgit v1.2.3-70-g09d2