mirror of
https://github.com/AnimeThemes/animethemes-api-docs.git
synced 2026-07-11 09:44:05 +02:00
Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4f8df05b75 | |||
| 8a5b9d5e4c | |||
| b9cd7b09a4 | |||
| 05118aaa8a | |||
| 8f834784fe | |||
| 70512007ab | |||
| 28e734f661 | |||
| 71e0ef106c | |||
| af9afe32cc | |||
| 4f34707907 | |||
| 20cd405f75 | |||
| 9827cacadb | |||
| 1176516aa2 | |||
| 4152aeb664 | |||
| 9a8db5d4cc | |||
| f862b53a00 | |||
| 2fb4723fe4 | |||
| 53cf705824 | |||
| ad0d7a80eb | |||
| 0fbb8326e7 | |||
| c2b90daf0d | |||
| f129648c3e | |||
| bdd016a886 | |||
| b636e061db | |||
| 1c0fbd5233 | |||
| 522cfec744 | |||
| cb58190584 | |||
| f12b15c440 | |||
| d70bd55ace | |||
| 6380af9a47 | |||
| 47de7a5378 | |||
| 5f1f7672e6 |
@@ -0,0 +1 @@
|
||||
**/*.md
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"printWidth": 120
|
||||
}
|
||||
+4
-4
@@ -38,10 +38,10 @@ behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
reject comments, commits, code, wiki edits, content edits, issues, and
|
||||
other contributions that are not aligned to this Code of Conduct, or
|
||||
to ban temporarily or permanently any contributor for other behaviors
|
||||
that they deem inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
## Requirements
|
||||
|
||||
* Nginx
|
||||
* Certbot
|
||||
* Bun
|
||||
|
||||
## Nginx
|
||||
|
||||
Create a new Nginx site configuration:
|
||||
```sh
|
||||
sudo nano /etc/nginx/sites-available/api-docs.animethemes.moe
|
||||
```
|
||||
|
||||
Paste the following configuration there:
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
||||
server_name api-docs.animethemes.moe;
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
root /var/www/html/animethemes-api-docs/docs/.vitepress/dist;
|
||||
|
||||
# Add index.php to the list if you are using PHP
|
||||
index index.html index.htm index.nginx-debian.html;
|
||||
|
||||
server_name api-docs.animethemes.moe;
|
||||
|
||||
# Nginx Bad Bot Blocker Includes
|
||||
include /etc/nginx/bots.d/ddos.conf;
|
||||
include /etc/nginx/bots.d/blockbots.conf;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
index index.html;
|
||||
}
|
||||
|
||||
location ~ /\.ht {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location ~ /.well-known {
|
||||
allow all;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```sh
|
||||
# Save the file, then enable the site
|
||||
sudo ln -s /etc/nginx/sites-available/api-docs.animethemes.moe /etc/nginx/sites-enabled/
|
||||
|
||||
# Validate and reload Nginx configuration
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
sudo systemctl restart nginx
|
||||
```
|
||||
|
||||
## Install Certificates
|
||||
|
||||
To install HTTPS certificates using Let's Encrypt, follow the official [guide from DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04).
|
||||
|
||||
## Application Setup
|
||||
|
||||
```sh
|
||||
# Go to the web directory and clone repository from Github
|
||||
cd /var/www/html
|
||||
sudo git clone git@github.com:AnimeThemes/animethemes-api-docs.git
|
||||
cd animethemes-api-docs
|
||||
|
||||
# Install the dependencies using Bun
|
||||
bun install
|
||||
|
||||
# Build the static files
|
||||
bun run docs:build
|
||||
```
|
||||
@@ -19,17 +19,21 @@ This project is powered by [**VitePress**](https://vitepress.vuejs.org/), a Vite
|
||||
|
||||
In the project root directory, install dependencies.
|
||||
|
||||
`npm install`
|
||||
`bun install`
|
||||
|
||||
In the project root directory, start the local development server.
|
||||
|
||||
`npm run docs:dev`
|
||||
`bun run docs:dev`
|
||||
|
||||
That's it! The local development server should be running at `localhost:5173`.
|
||||
|
||||
## Contributing
|
||||
|
||||
Please review the [**Contributing Guide**](https://github.com/AnimeThemes/animethemes-api-docs/blob/main/.github/CONTRIBUTING.md) for detailed instructions.
|
||||
Please review the [**Contributing Guide**](https://github.com/AnimeThemes/animethemes-api-docs/blob/main/CONTRIBUTING.md) for detailed instructions.
|
||||
|
||||
## Deployment
|
||||
|
||||
Please review the [**Deployment Guide**](https://github.com/AnimeThemes/animethemes-api-docs/blob/main/DEPLOYMENT.md) for detailed instructions.
|
||||
|
||||
## Resources
|
||||
|
||||
|
||||
@@ -0,0 +1,339 @@
|
||||
{
|
||||
"lockfileVersion": 1,
|
||||
"configVersion": 1,
|
||||
"workspaces": {
|
||||
"": {
|
||||
"name": "animethemes-api-docs",
|
||||
"dependencies": {
|
||||
"dotenv": "^17.3.1",
|
||||
"vitepress": "^2.0.0-alpha.12",
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "^3.8.1",
|
||||
},
|
||||
},
|
||||
},
|
||||
"packages": {
|
||||
"@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="],
|
||||
|
||||
"@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="],
|
||||
|
||||
"@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="],
|
||||
|
||||
"@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="],
|
||||
|
||||
"@docsearch/css": ["@docsearch/css@4.5.4", "", {}, "sha512-gzO4DJwyM9c4YEPHwaLV1nUCDC2N6yoh0QJj44dce2rcfN71mB+jpu3+F+Y/KMDF1EKV0C3m54leSWsraE94xg=="],
|
||||
|
||||
"@docsearch/js": ["@docsearch/js@4.5.4", "", {}, "sha512-jEBsIklNTevznLZouB0y6SZcaT897gRHnGTzCcH32ibPZRVj/9FyuAM2LUTk61sFdOY79LH4V9rYsIdOe6Wq2g=="],
|
||||
|
||||
"@docsearch/sidepanel-js": ["@docsearch/sidepanel-js@4.5.4", "", {}, "sha512-f4KE4cG+P09gJHQNfttfMNy+3gAGj8U0YEgiOOso0YCFI5nGoVvJQpxNMSPgXs4sG34A/oCfKhYwHJiqgHhxPw=="],
|
||||
|
||||
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="],
|
||||
|
||||
"@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="],
|
||||
|
||||
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.3", "", { "os": "android", "cpu": "arm64" }, "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg=="],
|
||||
|
||||
"@esbuild/android-x64": ["@esbuild/android-x64@0.27.3", "", { "os": "android", "cpu": "x64" }, "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ=="],
|
||||
|
||||
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg=="],
|
||||
|
||||
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg=="],
|
||||
|
||||
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w=="],
|
||||
|
||||
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA=="],
|
||||
|
||||
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.3", "", { "os": "linux", "cpu": "arm" }, "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw=="],
|
||||
|
||||
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg=="],
|
||||
|
||||
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg=="],
|
||||
|
||||
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA=="],
|
||||
|
||||
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw=="],
|
||||
|
||||
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA=="],
|
||||
|
||||
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ=="],
|
||||
|
||||
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw=="],
|
||||
|
||||
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.3", "", { "os": "linux", "cpu": "x64" }, "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA=="],
|
||||
|
||||
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA=="],
|
||||
|
||||
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.3", "", { "os": "none", "cpu": "x64" }, "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA=="],
|
||||
|
||||
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw=="],
|
||||
|
||||
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ=="],
|
||||
|
||||
"@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g=="],
|
||||
|
||||
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA=="],
|
||||
|
||||
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA=="],
|
||||
|
||||
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q=="],
|
||||
|
||||
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="],
|
||||
|
||||
"@iconify-json/simple-icons": ["@iconify-json/simple-icons@1.2.70", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-CYNRCgN6nBTjN4dNkrBCjHXNR2e4hQihdsZUs/afUNFOWLSYjfihca4EFN05rRvDk4Xoy2n8tym6IxBZmcn+Qg=="],
|
||||
|
||||
"@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="],
|
||||
|
||||
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
|
||||
|
||||
"@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.2", "", {}, "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw=="],
|
||||
|
||||
"@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.57.1", "", { "os": "android", "cpu": "arm" }, "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg=="],
|
||||
|
||||
"@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.57.1", "", { "os": "android", "cpu": "arm64" }, "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w=="],
|
||||
|
||||
"@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.57.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg=="],
|
||||
|
||||
"@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.57.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w=="],
|
||||
|
||||
"@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.57.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug=="],
|
||||
|
||||
"@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.57.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q=="],
|
||||
|
||||
"@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.57.1", "", { "os": "linux", "cpu": "arm" }, "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw=="],
|
||||
|
||||
"@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.57.1", "", { "os": "linux", "cpu": "arm" }, "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw=="],
|
||||
|
||||
"@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.57.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g=="],
|
||||
|
||||
"@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.57.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q=="],
|
||||
|
||||
"@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA=="],
|
||||
|
||||
"@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw=="],
|
||||
|
||||
"@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.57.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w=="],
|
||||
|
||||
"@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.57.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw=="],
|
||||
|
||||
"@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A=="],
|
||||
|
||||
"@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw=="],
|
||||
|
||||
"@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.57.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg=="],
|
||||
|
||||
"@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.57.1", "", { "os": "linux", "cpu": "x64" }, "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg=="],
|
||||
|
||||
"@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.57.1", "", { "os": "linux", "cpu": "x64" }, "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw=="],
|
||||
|
||||
"@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.57.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw=="],
|
||||
|
||||
"@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.57.1", "", { "os": "none", "cpu": "arm64" }, "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ=="],
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.57.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ=="],
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.57.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew=="],
|
||||
|
||||
"@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.57.1", "", { "os": "win32", "cpu": "x64" }, "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ=="],
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.57.1", "", { "os": "win32", "cpu": "x64" }, "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA=="],
|
||||
|
||||
"@shikijs/core": ["@shikijs/core@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA=="],
|
||||
|
||||
"@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw=="],
|
||||
|
||||
"@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA=="],
|
||||
|
||||
"@shikijs/langs": ["@shikijs/langs@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0" } }, "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA=="],
|
||||
|
||||
"@shikijs/themes": ["@shikijs/themes@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0" } }, "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g=="],
|
||||
|
||||
"@shikijs/transformers": ["@shikijs/transformers@3.22.0", "", { "dependencies": { "@shikijs/core": "3.22.0", "@shikijs/types": "3.22.0" } }, "sha512-E7eRV7mwDBjueLF6852n2oYeJYxBq3NSsDk+uyruYAXONv4U8holGmIrT+mPRJQ1J1SNOH6L8G19KRzmBawrFw=="],
|
||||
|
||||
"@shikijs/types": ["@shikijs/types@3.22.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg=="],
|
||||
|
||||
"@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="],
|
||||
|
||||
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
|
||||
|
||||
"@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="],
|
||||
|
||||
"@types/linkify-it": ["@types/linkify-it@5.0.0", "", {}, "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q=="],
|
||||
|
||||
"@types/markdown-it": ["@types/markdown-it@14.1.2", "", { "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" } }, "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog=="],
|
||||
|
||||
"@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="],
|
||||
|
||||
"@types/mdurl": ["@types/mdurl@2.0.0", "", {}, "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg=="],
|
||||
|
||||
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
|
||||
|
||||
"@types/web-bluetooth": ["@types/web-bluetooth@0.0.21", "", {}, "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA=="],
|
||||
|
||||
"@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
|
||||
|
||||
"@vitejs/plugin-vue": ["@vitejs/plugin-vue@6.0.4", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-rc.2" }, "peerDependencies": { "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "vue": "^3.2.25" } }, "sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ=="],
|
||||
|
||||
"@vue/compiler-core": ["@vue/compiler-core@3.5.28", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/shared": "3.5.28", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ=="],
|
||||
|
||||
"@vue/compiler-dom": ["@vue/compiler-dom@3.5.28", "", { "dependencies": { "@vue/compiler-core": "3.5.28", "@vue/shared": "3.5.28" } }, "sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA=="],
|
||||
|
||||
"@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.28", "", { "dependencies": { "@babel/parser": "^7.29.0", "@vue/compiler-core": "3.5.28", "@vue/compiler-dom": "3.5.28", "@vue/compiler-ssr": "3.5.28", "@vue/shared": "3.5.28", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.6", "source-map-js": "^1.2.1" } }, "sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g=="],
|
||||
|
||||
"@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.28", "", { "dependencies": { "@vue/compiler-dom": "3.5.28", "@vue/shared": "3.5.28" } }, "sha512-JCq//9w1qmC6UGLWJX7RXzrGpKkroubey/ZFqTpvEIDJEKGgntuDMqkuWiZvzTzTA5h2qZvFBFHY7fAAa9475g=="],
|
||||
|
||||
"@vue/devtools-api": ["@vue/devtools-api@8.0.6", "", { "dependencies": { "@vue/devtools-kit": "^8.0.6" } }, "sha512-+lGBI+WTvJmnU2FZqHhEB8J1DXcvNlDeEalz77iYgOdY1jTj1ipSBaKj3sRhYcy+kqA8v/BSuvOz1XJucfQmUA=="],
|
||||
|
||||
"@vue/devtools-kit": ["@vue/devtools-kit@8.0.6", "", { "dependencies": { "@vue/devtools-shared": "^8.0.6", "birpc": "^2.6.1", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^2.0.0", "speakingurl": "^14.0.1", "superjson": "^2.2.2" } }, "sha512-9zXZPTJW72OteDXeSa5RVML3zWDCRcO5t77aJqSs228mdopYj5AiTpihozbsfFJ0IodfNs7pSgOGO3qfCuxDtw=="],
|
||||
|
||||
"@vue/devtools-shared": ["@vue/devtools-shared@8.0.6", "", { "dependencies": { "rfdc": "^1.4.1" } }, "sha512-Pp1JylTqlgMJvxW6MGyfTF8vGvlBSCAvMFaDCYa82Mgw7TT5eE5kkHgDvmOGHWeJE4zIDfCpCxHapsK2LtIAJg=="],
|
||||
|
||||
"@vue/reactivity": ["@vue/reactivity@3.5.28", "", { "dependencies": { "@vue/shared": "3.5.28" } }, "sha512-gr5hEsxvn+RNyu9/9o1WtdYdwDjg5FgjUSBEkZWqgTKlo/fvwZ2+8W6AfKsc9YN2k/+iHYdS9vZYAhpi10kNaw=="],
|
||||
|
||||
"@vue/runtime-core": ["@vue/runtime-core@3.5.28", "", { "dependencies": { "@vue/reactivity": "3.5.28", "@vue/shared": "3.5.28" } }, "sha512-POVHTdbgnrBBIpnbYU4y7pOMNlPn2QVxVzkvEA2pEgvzbelQq4ZOUxbp2oiyo+BOtiYlm8Q44wShHJoBvDPAjQ=="],
|
||||
|
||||
"@vue/runtime-dom": ["@vue/runtime-dom@3.5.28", "", { "dependencies": { "@vue/reactivity": "3.5.28", "@vue/runtime-core": "3.5.28", "@vue/shared": "3.5.28", "csstype": "^3.2.3" } }, "sha512-4SXxSF8SXYMuhAIkT+eBRqOkWEfPu6nhccrzrkioA6l0boiq7sp18HCOov9qWJA5HML61kW8p/cB4MmBiG9dSA=="],
|
||||
|
||||
"@vue/server-renderer": ["@vue/server-renderer@3.5.28", "", { "dependencies": { "@vue/compiler-ssr": "3.5.28", "@vue/shared": "3.5.28" }, "peerDependencies": { "vue": "3.5.28" } }, "sha512-pf+5ECKGj8fX95bNincbzJ6yp6nyzuLDhYZCeFxUNp8EBrQpPpQaLX3nNCp49+UbgbPun3CeVE+5CXVV1Xydfg=="],
|
||||
|
||||
"@vue/shared": ["@vue/shared@3.5.28", "", {}, "sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ=="],
|
||||
|
||||
"@vueuse/core": ["@vueuse/core@14.2.1", "", { "dependencies": { "@types/web-bluetooth": "^0.0.21", "@vueuse/metadata": "14.2.1", "@vueuse/shared": "14.2.1" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ=="],
|
||||
|
||||
"@vueuse/integrations": ["@vueuse/integrations@14.2.1", "", { "dependencies": { "@vueuse/core": "14.2.1", "@vueuse/shared": "14.2.1" }, "peerDependencies": { "async-validator": "^4", "axios": "^1", "change-case": "^5", "drauu": "^0.4", "focus-trap": "^7 || ^8", "fuse.js": "^7", "idb-keyval": "^6", "jwt-decode": "^4", "nprogress": "^0.2", "qrcode": "^1.5", "sortablejs": "^1", "universal-cookie": "^7 || ^8", "vue": "^3.5.0" }, "optionalPeers": ["async-validator", "axios", "change-case", "drauu", "focus-trap", "fuse.js", "idb-keyval", "jwt-decode", "nprogress", "qrcode", "sortablejs", "universal-cookie"] }, "sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA=="],
|
||||
|
||||
"@vueuse/metadata": ["@vueuse/metadata@14.2.1", "", {}, "sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw=="],
|
||||
|
||||
"@vueuse/shared": ["@vueuse/shared@14.2.1", "", { "peerDependencies": { "vue": "^3.5.0" } }, "sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw=="],
|
||||
|
||||
"birpc": ["birpc@2.9.0", "", {}, "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw=="],
|
||||
|
||||
"ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="],
|
||||
|
||||
"character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="],
|
||||
|
||||
"character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="],
|
||||
|
||||
"comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
|
||||
|
||||
"copy-anything": ["copy-anything@4.0.5", "", { "dependencies": { "is-what": "^5.2.0" } }, "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA=="],
|
||||
|
||||
"csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
|
||||
|
||||
"dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="],
|
||||
|
||||
"devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
|
||||
|
||||
"dotenv": ["dotenv@17.3.1", "", {}, "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA=="],
|
||||
|
||||
"entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="],
|
||||
|
||||
"esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="],
|
||||
|
||||
"estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
|
||||
|
||||
"fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
|
||||
|
||||
"focus-trap": ["focus-trap@7.8.0", "", { "dependencies": { "tabbable": "^6.4.0" } }, "sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA=="],
|
||||
|
||||
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
|
||||
|
||||
"hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="],
|
||||
|
||||
"hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="],
|
||||
|
||||
"hookable": ["hookable@5.5.3", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="],
|
||||
|
||||
"html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="],
|
||||
|
||||
"is-what": ["is-what@5.5.0", "", {}, "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw=="],
|
||||
|
||||
"magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
|
||||
|
||||
"mark.js": ["mark.js@8.11.1", "", {}, "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ=="],
|
||||
|
||||
"mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="],
|
||||
|
||||
"micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="],
|
||||
|
||||
"micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="],
|
||||
|
||||
"micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="],
|
||||
|
||||
"micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="],
|
||||
|
||||
"micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="],
|
||||
|
||||
"minisearch": ["minisearch@7.2.0", "", {}, "sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg=="],
|
||||
|
||||
"mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="],
|
||||
|
||||
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
|
||||
|
||||
"oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="],
|
||||
|
||||
"oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="],
|
||||
|
||||
"perfect-debounce": ["perfect-debounce@2.1.0", "", {}, "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g=="],
|
||||
|
||||
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
|
||||
|
||||
"picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
|
||||
|
||||
"postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
|
||||
|
||||
"prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="],
|
||||
|
||||
"property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="],
|
||||
|
||||
"regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="],
|
||||
|
||||
"regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="],
|
||||
|
||||
"regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="],
|
||||
|
||||
"rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="],
|
||||
|
||||
"rollup": ["rollup@4.57.1", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.57.1", "@rollup/rollup-android-arm64": "4.57.1", "@rollup/rollup-darwin-arm64": "4.57.1", "@rollup/rollup-darwin-x64": "4.57.1", "@rollup/rollup-freebsd-arm64": "4.57.1", "@rollup/rollup-freebsd-x64": "4.57.1", "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", "@rollup/rollup-linux-arm-musleabihf": "4.57.1", "@rollup/rollup-linux-arm64-gnu": "4.57.1", "@rollup/rollup-linux-arm64-musl": "4.57.1", "@rollup/rollup-linux-loong64-gnu": "4.57.1", "@rollup/rollup-linux-loong64-musl": "4.57.1", "@rollup/rollup-linux-ppc64-gnu": "4.57.1", "@rollup/rollup-linux-ppc64-musl": "4.57.1", "@rollup/rollup-linux-riscv64-gnu": "4.57.1", "@rollup/rollup-linux-riscv64-musl": "4.57.1", "@rollup/rollup-linux-s390x-gnu": "4.57.1", "@rollup/rollup-linux-x64-gnu": "4.57.1", "@rollup/rollup-linux-x64-musl": "4.57.1", "@rollup/rollup-openbsd-x64": "4.57.1", "@rollup/rollup-openharmony-arm64": "4.57.1", "@rollup/rollup-win32-arm64-msvc": "4.57.1", "@rollup/rollup-win32-ia32-msvc": "4.57.1", "@rollup/rollup-win32-x64-gnu": "4.57.1", "@rollup/rollup-win32-x64-msvc": "4.57.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A=="],
|
||||
|
||||
"shiki": ["shiki@3.22.0", "", { "dependencies": { "@shikijs/core": "3.22.0", "@shikijs/engine-javascript": "3.22.0", "@shikijs/engine-oniguruma": "3.22.0", "@shikijs/langs": "3.22.0", "@shikijs/themes": "3.22.0", "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g=="],
|
||||
|
||||
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
|
||||
|
||||
"space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="],
|
||||
|
||||
"speakingurl": ["speakingurl@14.0.1", "", {}, "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ=="],
|
||||
|
||||
"stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="],
|
||||
|
||||
"superjson": ["superjson@2.2.6", "", { "dependencies": { "copy-anything": "^4" } }, "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA=="],
|
||||
|
||||
"tabbable": ["tabbable@6.4.0", "", {}, "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg=="],
|
||||
|
||||
"tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
|
||||
|
||||
"trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="],
|
||||
|
||||
"unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="],
|
||||
|
||||
"unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="],
|
||||
|
||||
"unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="],
|
||||
|
||||
"unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="],
|
||||
|
||||
"unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="],
|
||||
|
||||
"vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="],
|
||||
|
||||
"vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="],
|
||||
|
||||
"vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="],
|
||||
|
||||
"vitepress": ["vitepress@2.0.0-alpha.16", "", { "dependencies": { "@docsearch/css": "^4.5.3", "@docsearch/js": "^4.5.3", "@docsearch/sidepanel-js": "^4.5.3", "@iconify-json/simple-icons": "^1.2.68", "@shikijs/core": "^3.21.0", "@shikijs/transformers": "^3.21.0", "@shikijs/types": "^3.21.0", "@types/markdown-it": "^14.1.2", "@vitejs/plugin-vue": "^6.0.3", "@vue/devtools-api": "^8.0.5", "@vue/shared": "^3.5.27", "@vueuse/core": "^14.1.0", "@vueuse/integrations": "^14.1.0", "focus-trap": "^7.8.0", "mark.js": "8.11.1", "minisearch": "^7.2.0", "shiki": "^3.21.0", "vite": "^7.3.1", "vue": "^3.5.27" }, "peerDependencies": { "markdown-it-mathjax3": "^4", "oxc-minify": "*", "postcss": "^8" }, "optionalPeers": ["markdown-it-mathjax3", "oxc-minify", "postcss"], "bin": { "vitepress": "bin/vitepress.js" } }, "sha512-w1nwsefDVIsje7BZr2tsKxkZutDGjG0YoQ2yxO7+a9tvYVqfljYbwj5LMYkPy8Tb7YbPwa22HtIhk62jbrvuEQ=="],
|
||||
|
||||
"vue": ["vue@3.5.28", "", { "dependencies": { "@vue/compiler-dom": "3.5.28", "@vue/compiler-sfc": "3.5.28", "@vue/runtime-dom": "3.5.28", "@vue/server-renderer": "3.5.28", "@vue/shared": "3.5.28" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-BRdrNfeoccSoIZeIhyPBfvWSLFP4q8J3u8Ju8Ug5vu3LdD+yTM13Sg4sKtljxozbnuMu1NB1X5HBHRYUzFocKg=="],
|
||||
|
||||
"zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="],
|
||||
}
|
||||
}
|
||||
+540
-551
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,6 @@
|
||||
:root {
|
||||
--vp-c-brand: #40b8a6;
|
||||
--vp-c-brand-light: #75ead4;
|
||||
--vp-c-brand-lighter: #d1fbf1;
|
||||
--vp-c-brand-dark: #28766e;
|
||||
--vp-c-brand-darker: #1e4e4a;
|
||||
--vp-c-brand-1: #40b8a6;
|
||||
--vp-c-brand-2: #28766e;
|
||||
--vp-c-brand-3: #1e4e4a;
|
||||
--vp-c-brand-soft: rgba(64, 184, 166, 0.16);
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import path from "path";
|
||||
|
||||
export default function graphqlWarnPlugin() {
|
||||
return {
|
||||
name: "graphql-warn-plugin",
|
||||
enforce: "pre",
|
||||
transform(code, id) {
|
||||
if (!id.endsWith(".md")) return;
|
||||
|
||||
const relativePath = path.relative(process.cwd(), id);
|
||||
if (!relativePath.includes("graphql")) return;
|
||||
|
||||
const warningBlock = [
|
||||
"::: warning",
|
||||
"⚠️ The GraphQL API is experimental and subject to change without notice.",
|
||||
":::",
|
||||
"",
|
||||
].join("\n");
|
||||
|
||||
if (code.startsWith("---")) {
|
||||
const endOfFrontmatter = code.indexOf("---", 3);
|
||||
if (endOfFrontmatter !== -1) {
|
||||
const before = code.slice(0, endOfFrontmatter + 3);
|
||||
const after = code.slice(endOfFrontmatter + 3);
|
||||
return {
|
||||
code: `${before}\n\n${warningBlock}${after}`,
|
||||
map: null,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
code: warningBlock + code,
|
||||
map: null,
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
title: Announcement Force Delete
|
||||
---
|
||||
|
||||
# Announcement Force Delete Endpoint
|
||||
|
||||
The announcement force delete endpoint hard deletes an announcement and returns a confirmation message.
|
||||
|
||||
For example, the `/forceDelete/announcement/1` endpoint will hard delete the announcement of id '1' and return a confirmation message.
|
||||
|
||||
## URL
|
||||
|
||||
```sh
|
||||
DELETE /forceDelete/announcement/{id}
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
**Required Permission**: force delete announcement
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
None
|
||||
|
||||
## Response
|
||||
|
||||
```json
|
||||
{
|
||||
message: "The Announcement '1' was deleted.",
|
||||
}
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```bash
|
||||
curl -X DELETE -H "Authorization: Bearer {token}" https://api.animethemes.moe/forceDelete/announcement/1
|
||||
```
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
title: Announcement Restore
|
||||
---
|
||||
|
||||
# Announcement Restore Endpoint
|
||||
|
||||
The announcement restore endpoint restores a soft deleted announcement and returns the restored announcement resource.
|
||||
|
||||
For example, the `/restore/announcement/1` endpoint will restore the soft deleted announcement of id '1' and return the restored announcement resource.
|
||||
|
||||
## URL
|
||||
|
||||
```sh
|
||||
PATCH /restore/announcement/{id}
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
**Required Permission**: restore announcement
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
**Other Requirements**: Announcement must be soft deleted
|
||||
|
||||
## Parameters
|
||||
|
||||
None
|
||||
|
||||
## Response
|
||||
|
||||
```json
|
||||
{
|
||||
announcement: {
|
||||
id: id,
|
||||
content: "content",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```bash
|
||||
curl -X PATCH -H "Authorization: Bearer {token}" https://api.animethemes.moe/restore/announcement/1
|
||||
```
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
title: Dump Force Delete
|
||||
---
|
||||
|
||||
# Dump Force Delete Endpoint
|
||||
|
||||
The dump force delete endpoint hard deletes a dump and returns a confirmation message.
|
||||
|
||||
For example, the `/forceDelete/dump/1` endpoint will hard delete the dump of id '1' and return a confirmation message.
|
||||
|
||||
## URL
|
||||
|
||||
```sh
|
||||
DELETE /forceDelete/dump/{id}
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
**Required Permission**: force delete dump
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
None
|
||||
|
||||
## Response
|
||||
|
||||
```json
|
||||
{
|
||||
message: "The Dump '1' was deleted.",
|
||||
}
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```bash
|
||||
curl -X DELETE -H "Authorization: Bearer {token}" https://api.animethemes.moe/forceDelete/dump/1
|
||||
```
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: Dump Restore
|
||||
---
|
||||
|
||||
# Dump Restore Endpoint
|
||||
|
||||
The dump restore endpoint restores a soft deleted dump and returns the restored dump resource.
|
||||
|
||||
For example, the `/restore/dump/1` endpoint will restore the soft deleted dump of id '1' and return the restored dump resource.
|
||||
|
||||
## URL
|
||||
|
||||
```sh
|
||||
PATCH /restore/dump/{id}
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
**Required Permission**: restore dump
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
**Other Requirements**: Dump must be soft deleted
|
||||
|
||||
## Parameters
|
||||
|
||||
None
|
||||
|
||||
## Response
|
||||
|
||||
```json
|
||||
{
|
||||
dump: {
|
||||
id: id,
|
||||
path: "path",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at",
|
||||
link: "link
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```bash
|
||||
curl -X PATCH -H "Authorization: Bearer {token}" https://api.animethemes.moe/restore/dump/1
|
||||
```
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
title: Featured Theme Force Delete
|
||||
---
|
||||
|
||||
# Featured Theme Force Delete Endpoint
|
||||
|
||||
The featured theme force delete endpoint hard deletes a featured theme and returns a confirmation message.
|
||||
|
||||
For example, the `/forceDelete/featuredtheme/1` endpoint will hard delete the featured theme of id '1' and return a confirmation message.
|
||||
|
||||
## URL
|
||||
|
||||
```sh
|
||||
DELETE /forceDelete/featuredtheme/{id}
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
**Required Permission**: force delete featured theme
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
None
|
||||
|
||||
## Response
|
||||
|
||||
```json
|
||||
{
|
||||
message: "The Featured Theme '1' was deleted.",
|
||||
}
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```bash
|
||||
curl -X DELETE -H "Authorization: Bearer {token}" https://api.animethemes.moe/forceDelete/featuredtheme/1
|
||||
```
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: Featured Theme Restore
|
||||
---
|
||||
|
||||
# Featured Theme Restore Endpoint
|
||||
|
||||
The featured theme restore endpoint restores a soft deleted featured theme and returns the restored featured theme resource.
|
||||
|
||||
For example, the `/restore/featuredtheme/1` endpoint will restore the soft deleted featured theme of id '1' and return the restored featured theme resource.
|
||||
|
||||
## URL
|
||||
|
||||
```sh
|
||||
PATCH /restore/featuredtheme/{id}
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
**Required Permission**: restore featured theme
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
**Other Requirements**: Featured Theme must be soft deleted
|
||||
|
||||
## Parameters
|
||||
|
||||
None
|
||||
|
||||
## Response
|
||||
|
||||
```json
|
||||
{
|
||||
featuredtheme: {
|
||||
id: id,
|
||||
start_at: "start_at",
|
||||
end_at: "end_at",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
```bash
|
||||
curl -X PATCH -H "Authorization: Bearer {token}" https://api.animethemes.moe/restore/featuredtheme/1
|
||||
```
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: Filter by External Site
|
||||
---
|
||||
|
||||
# Filter by External Site
|
||||
|
||||
---
|
||||
|
||||
The AnimeThemes API provides an exclusive query for one of its most common use cases.
|
||||
The `findAnimeByExternalSite` query accepts three arguments to filter anime by external resources.
|
||||
An external resource may be linked to multiple anime.
|
||||
|
||||
## Query Example
|
||||
|
||||
```graphql
|
||||
query ($id: [Int!]) {
|
||||
findAnimeByExternalSite(site: ANILIST, id: $id) {
|
||||
name
|
||||
format
|
||||
season
|
||||
year
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
None
|
||||
|
||||
## Parameters
|
||||
|
||||
| Name | Type | Description |
|
||||
| :---: | :-----------: | :------------------------------------------------------------------------- |
|
||||
| site | ResourceSite! | The site enum used to filter. |
|
||||
| id | [Int!] | The ids of the anime on the external site. Required if no `link` provided. |
|
||||
| link | String | The URL of the external resource. Required if no `id` provided. |
|
||||
|
||||
## Response
|
||||
|
||||
```json
|
||||
{
|
||||
"data": {
|
||||
"findAnimeByExternalSite": [
|
||||
{
|
||||
"name": "Hibike! Euphonium 3",
|
||||
"format": "TV",
|
||||
"season": "SPRING",
|
||||
"year": 2024
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,98 @@
|
||||
---
|
||||
title: Global Search
|
||||
---
|
||||
|
||||
# Global Search Query
|
||||
|
||||
---
|
||||
|
||||
The global search query returns a listing of resources that match a given search term.
|
||||
|
||||
## Query Example
|
||||
|
||||
```graphql
|
||||
query ($search: String!) {
|
||||
search(search: $search) {
|
||||
anime {
|
||||
name
|
||||
}
|
||||
artists {
|
||||
name
|
||||
}
|
||||
animethemes {
|
||||
type
|
||||
}
|
||||
playlists {
|
||||
name
|
||||
}
|
||||
series {
|
||||
name
|
||||
}
|
||||
songs {
|
||||
title
|
||||
}
|
||||
studios {
|
||||
name
|
||||
}
|
||||
videos {
|
||||
basename
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
None
|
||||
|
||||
## Parameters
|
||||
|
||||
| Name | Type | Description |
|
||||
| :----------: | :------: | :----------------------------- |
|
||||
| page | Int | Index of the current page |
|
||||
| first | Int! | Number of items per page |
|
||||
| search | String! | The term used for the search |
|
||||
|
||||
## Response
|
||||
|
||||
```json
|
||||
{
|
||||
search: {
|
||||
anime: [
|
||||
{
|
||||
name: "name"
|
||||
}
|
||||
],
|
||||
animethemes: [
|
||||
{
|
||||
type: "type"
|
||||
}
|
||||
],
|
||||
artists: [
|
||||
{
|
||||
name: "name"
|
||||
}
|
||||
],
|
||||
playlists: [
|
||||
{
|
||||
name: "name"
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: "name"
|
||||
}
|
||||
],
|
||||
songs: [
|
||||
{
|
||||
title: "title"
|
||||
}
|
||||
],
|
||||
videos: [
|
||||
{
|
||||
basename: "basename"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: Filtering
|
||||
---
|
||||
|
||||
# Filtering
|
||||
|
||||
---
|
||||
|
||||
Most queries provide some filtering arguments using the AND operator. Filtering arguments are built using the `{field}_{filter}` case pattern.
|
||||
|
||||
Query example:
|
||||
```graphql
|
||||
query {
|
||||
animePagination(name_like: "%monogatari%") {
|
||||
data {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Relationship Filtering
|
||||
|
||||
Filtering in relationships is applied **ONLY** to the relationship and does not affect the previous root.
|
||||
|
||||
```graphql
|
||||
query {
|
||||
anime(slug: "hibike_euphonium") {
|
||||
name
|
||||
animethemes(type: OP) {
|
||||
type
|
||||
sequence
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Advanced Filtering
|
||||
|
||||
The where argument allows you to apply flexible and composable filters to pagination queries.
|
||||
It supports single conditions, logical operators, and nested filters.
|
||||
|
||||
```graphql
|
||||
query {
|
||||
animePagination(
|
||||
where: {
|
||||
column: SEASON,
|
||||
operator: NEQ,
|
||||
value: FALL
|
||||
}
|
||||
) {
|
||||
data {
|
||||
name
|
||||
season
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Logical Operators
|
||||
|
||||
Logical operators (AND, OR) can be nested to build complex filter trees, allowing advanced query expressions with precise control over result sets.
|
||||
|
||||
Query example:
|
||||
```graphql
|
||||
query {
|
||||
# Returns all anime where the season is either WINTER or FALL.
|
||||
animePagination(
|
||||
where: {
|
||||
OR: [
|
||||
{
|
||||
column: SEASON,
|
||||
operator: EQ,
|
||||
value: WINTER,
|
||||
},
|
||||
{
|
||||
column: SEASON,
|
||||
operator: EQ,
|
||||
value: FALL,
|
||||
}
|
||||
]
|
||||
}
|
||||
) {
|
||||
data {
|
||||
name
|
||||
season
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Comparison Operators
|
||||
|
||||
| Value | Description |
|
||||
| :---------: | :----------------------------------------------------------------------------- |
|
||||
| EQ | Matches values that are exactly equal to the given value. |
|
||||
| NEQ | Matches values that are not equal to the given value. |
|
||||
| LT | Matches values less than the given value. |
|
||||
| GT | Matches values greater than the given value. |
|
||||
| LTE | Matches values less than or equal to the given value. |
|
||||
| GTE | Matches values greater than or equal to the given value. |
|
||||
| LIKE | Matches values that partially match the given pattern (using wildcard search). |
|
||||
| NOT_LIKE | Matches values that do not match the given pattern. |
|
||||
| IN | Matches values that are within the given values. |
|
||||
| NOT_IN | Matches values that are not within the given values. |
|
||||
| BETWEEN | Matches values that are within a range of the given values. |
|
||||
| NOT_BETWEEN | Matches values that are not within a range of the given values. |
|
||||
| IS_NULL | Matches values that are null. |
|
||||
| IS_NOT_NULL | Matches values that are not null. |
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: Getting Started
|
||||
---
|
||||
|
||||
# Getting Started
|
||||
|
||||
---
|
||||
|
||||
The AnimeThemes API selectively implements the [**GraphQL Tool**](https://graphql.org).
|
||||
|
||||
Here we will provide an overview of where the AnimeThemes API adheres to or deviates from the specification.
|
||||
|
||||
It is recommended that you learn how to wrap a [GraphQL API](https://graphql.org/learn/).
|
||||
|
||||
## Content Negotiation
|
||||
|
||||
The AnimeThemes API needs a `Content-Type` header.
|
||||
|
||||
```powershell
|
||||
# A simple curl request works like this.
|
||||
curl -X POST
|
||||
-H "Content-Type: application/json"
|
||||
-d "{\"query\": \"{ animePagination { data { name } } }\"}"
|
||||
https://graphql.animethemes.moe/
|
||||
```
|
||||
|
||||
## Document Structure
|
||||
|
||||
### Top Level
|
||||
|
||||
The AnimeThemes API specifies a custom `data` wrap for top-level members that use pagination.
|
||||
|
||||
The following query
|
||||
```graphql
|
||||
query {
|
||||
animePagination {
|
||||
data {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
will return the JSON:
|
||||
```json
|
||||
{
|
||||
"data": {
|
||||
"animePagination": {
|
||||
"data": [
|
||||
{
|
||||
"name": ".hack//Liminality"
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
title: Pagination
|
||||
---
|
||||
|
||||
# Pagination
|
||||
|
||||
---
|
||||
|
||||
The AnimeThemes API query that uses pagination shall contain a `paginationInfo` object for pagination strategies and a `data` collection with the resources.
|
||||
|
||||
The top-level fields that use pagination are singular and have the `Pagination` suffix.
|
||||
|
||||
|
||||
## Arguments
|
||||
|
||||
There are two arguments available for every query that uses pagination.
|
||||
|
||||
| Name | Type | Default | Max | Description |
|
||||
| :-------: | :------: | :------: | :------: | ----------------------------------------- |
|
||||
| first | Int! | 15 | 100 | Limits number of fetched items |
|
||||
| page | Int | 1 | lastPage | The offset from which items are returned |
|
||||
|
||||
## Query
|
||||
|
||||
The following query
|
||||
```graphql
|
||||
query {
|
||||
animePagination(first: 2, page: 1) {
|
||||
paginatorInfo {
|
||||
count
|
||||
currentPage
|
||||
firstItem
|
||||
hasMorePages
|
||||
lastItem
|
||||
lastPage
|
||||
perPage
|
||||
total
|
||||
}
|
||||
data {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
will return the JSON:
|
||||
```json
|
||||
{
|
||||
"data": {
|
||||
"animePagination": {
|
||||
"paginationInfo": {
|
||||
"count": 2,
|
||||
"currentPage": 1,
|
||||
"firstItem": 1,
|
||||
"hasMorePages": true,
|
||||
"lastItem": 2,
|
||||
"lastPage": 2317,
|
||||
"perPage": 2,
|
||||
"total": 4633
|
||||
},
|
||||
"data": [
|
||||
{
|
||||
"name": ".hack//Liminality"
|
||||
},
|
||||
{
|
||||
"name": ".hack//roots"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
---
|
||||
title: Relationships
|
||||
---
|
||||
|
||||
# Relationships
|
||||
|
||||
---
|
||||
|
||||
The AnimeThemes API implements relationships for most types, previously known as "allowed includes" in the JSON:API.
|
||||
|
||||
The many-to-many relationships apply connections. The one-to-many relationships apply simple pagination.
|
||||
|
||||
## One-to-Many
|
||||
|
||||
A one-to-many relationship has a list of objects that reference the related type.
|
||||
And an inverse one-to-many relationship has a unique object that references the related type.
|
||||
|
||||
```graphql
|
||||
query($slug: String!) {
|
||||
anime(slug: $slug) {
|
||||
animethemes {
|
||||
sequence
|
||||
animethemeentries(first: 1, version: 1) { # Inverse One-to-Many
|
||||
version
|
||||
}
|
||||
anime { # One-to-Many
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Many-to-Many
|
||||
|
||||
Every many-to-many relationship applies connection pagination and has three top fields.
|
||||
Read about it in the [graphql.org](https://graphql.org/learn/pagination/#pagination-and-edges)
|
||||
and [relay.dev](https://relay.dev/graphql/connections.htm) documentations if you don't know what it is.
|
||||
|
||||
The `pageInfo` field provides pagination information.
|
||||
|
||||
The `nodes` field returns a list of objects that reference the related type.
|
||||
Use this field if you don't care about the pivot fields of the relationship.
|
||||
|
||||
The `edges` field returns a list of `edge` objects.
|
||||
The `edge` object always contains a `node` field that returns a singular object of the related type,
|
||||
and the pivot fields of the relationship.
|
||||
|
||||
Both fields `createdAt` and `updatedAt` are available for every many-to-many relationship.
|
||||
|
||||
The following query
|
||||
```graphql
|
||||
query {
|
||||
anime(slug: "hibike_euphonium") {
|
||||
name
|
||||
series {
|
||||
pageInfo { # Pagination
|
||||
hasNextPage
|
||||
hasPreviousPage
|
||||
startCursor
|
||||
endCursor
|
||||
total
|
||||
count
|
||||
currentPage
|
||||
lastPage
|
||||
}
|
||||
nodes { # Without pivot fields
|
||||
name
|
||||
}
|
||||
edges { # With pivot fields
|
||||
node {
|
||||
name
|
||||
}
|
||||
createdAt
|
||||
updatedAt
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
will return the JSON:
|
||||
```json
|
||||
{
|
||||
"data": {
|
||||
"anime": {
|
||||
"name": "Hibike! Euphonium",
|
||||
"series": {
|
||||
"pageInfo": {
|
||||
"hasNextPage": false,
|
||||
"hasPreviousPage": false,
|
||||
"startCursor": "MQ==",
|
||||
"endCursor": "MQ==",
|
||||
"total": 1,
|
||||
"count": 1,
|
||||
"currentPage": 1,
|
||||
"lastPage": 1
|
||||
},
|
||||
"nodes": [
|
||||
{
|
||||
"name": "Hibike! Euphonium"
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"node": {
|
||||
"name": "Hibike! Euphonium"
|
||||
},
|
||||
"createdAt": "2021-03-27 01:58:45",
|
||||
"updatedAt": "2021-03-27 01:58:45"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Polymorphic Many-to-Many
|
||||
|
||||
The polymorphic many-to-many relationship uses the same strategy as the usual [many-to-many](#many-to-many-belongstomany).
|
||||
|
||||
The following query
|
||||
```graphql
|
||||
query {
|
||||
anime(slug: "hibike_euphonium") {
|
||||
name
|
||||
resources {
|
||||
pageInfo { # Pagination
|
||||
hasNextPage
|
||||
hasPreviousPage
|
||||
startCursor
|
||||
endCursor
|
||||
total
|
||||
count
|
||||
currentPage
|
||||
lastPage
|
||||
}
|
||||
nodes { # Without pivot fields
|
||||
link
|
||||
}
|
||||
edges { # With pivot fields
|
||||
node {
|
||||
link
|
||||
}
|
||||
as
|
||||
createdAt
|
||||
updatedAt
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
will return the JSON:
|
||||
```json
|
||||
{
|
||||
"data": {
|
||||
"anime": {
|
||||
"name": "Hibike! Euphonium",
|
||||
"resources": {
|
||||
"pageInfo": {
|
||||
"hasNextPage": false,
|
||||
"hasPreviousPage": false,
|
||||
"startCursor": "MQ==",
|
||||
"endCursor": "OQ==",
|
||||
"total": 9,
|
||||
"count": 9,
|
||||
"currentPage": 1,
|
||||
"lastPage": 1
|
||||
},
|
||||
"nodes": [
|
||||
{
|
||||
"link": "https://myanimelist.net/anime/27989"
|
||||
},
|
||||
...
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"node": {
|
||||
"link": "https://myanimelist.net/anime/27989"
|
||||
},
|
||||
"as": null,
|
||||
"createdAt": "2021-03-26T21:49:16+00:00",
|
||||
"updatedAt": "2021-03-26T21:49:16+00:00"
|
||||
}
|
||||
...
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
title: Sorting
|
||||
---
|
||||
|
||||
# Sorting
|
||||
|
||||
---
|
||||
|
||||
Most queries provide a unique `sort` argument to manage resource sorting.
|
||||
This argument accepts a list of `{type}Sort` enum cases.
|
||||
|
||||
To sort in ascending order, the field name is enough.
|
||||
|
||||
To sort in descending order, append `_DESC` to the field name.
|
||||
|
||||
## Query
|
||||
|
||||
```graphql
|
||||
query {
|
||||
animePagination(sort: NAME) { # Sorting in ascending direction.
|
||||
data {
|
||||
name
|
||||
}
|
||||
}
|
||||
|
||||
animePagination(sort: NAME_DESC) { # Sorting in descending direction.
|
||||
data {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Nested Sorting
|
||||
|
||||
In one-to-many relationships, it is possible to sort the through a relation.
|
||||
For example, sort animethemes by their song title.
|
||||
|
||||
```graphql
|
||||
query {
|
||||
anime(slug: "hibike_euphonium") {
|
||||
animethemes(sort: SONG_TITLE) {
|
||||
song {
|
||||
title
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Relationship Sorting
|
||||
|
||||
It is possible to sort the relationships of the parent type.
|
||||
|
||||
```graphql
|
||||
query {
|
||||
anime(slug: "hibike_euphonium") {
|
||||
resources(sort: EXTERNAL_ID) {
|
||||
nodes {
|
||||
externalId
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Pivot Sorting
|
||||
|
||||
Sometimes, it is possible to sort results using pivot fields.
|
||||
|
||||
```graphql
|
||||
query {
|
||||
artistPagination {
|
||||
data {
|
||||
name
|
||||
members(sort: MEMBER_RELEVANCE) {
|
||||
edges {
|
||||
node {
|
||||
name
|
||||
}
|
||||
relevance
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Multiple Sorting
|
||||
|
||||
By providing a list of enum cases, the sort will be applied in the order of the values provided by the client.
|
||||
|
||||
```graphql
|
||||
{
|
||||
animePagination(sort: [YEAR_DESC, SEASON]) {
|
||||
data {
|
||||
year
|
||||
season
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: Validation
|
||||
---
|
||||
|
||||
# Validation
|
||||
|
||||
---
|
||||
|
||||
The AnimeThemes GraphQL API follows the [GraphQL official error handling specification](https://graphql.org/learn/response/#errors).
|
||||
|
||||
Whenever a validation error occurs, the API will still return an HTTP 200 status code. Instead of relying on status codes to indicate failure, errors are reported in the `errors` array within the response body.
|
||||
|
||||
Validation can fail for several reasons, including:
|
||||
|
||||
* An invalid query structure
|
||||
* Missing required arguments
|
||||
* Incorrect argument types or values
|
||||
|
||||
### Example
|
||||
|
||||
Consider the `findAnimeByExternalSite` query. This query requires at least one of the following arguments to function properly: `id` or `link`.
|
||||
|
||||
If neither argument is provided, the API will return an HTTP 200 response with an errors array describing the validation issue, similar to the following JSON:
|
||||
|
||||
```json
|
||||
{
|
||||
"errors": [
|
||||
{
|
||||
"message": "The id field is required when link is not present. (and 1 more error)",
|
||||
"locations": [
|
||||
{
|
||||
"line": 2,
|
||||
"column": 2
|
||||
}
|
||||
],
|
||||
"path": [
|
||||
"findAnimeByExternalSite"
|
||||
],
|
||||
"extensions": {
|
||||
"validation": {
|
||||
"id": [
|
||||
"The id field is required when link is not present."
|
||||
],
|
||||
"link": [
|
||||
"The link field is required when id is not present."
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
title: Introduction
|
||||
---
|
||||
|
||||
# Introduction
|
||||
|
||||
---
|
||||
|
||||
AnimeThemes is a simple and consistent repository of anime opening and ending themes. We provide direct links to high quality WebMs of your favorite OPs and EDs for your listening and discussion needs.
|
||||
|
||||
The AnimeThemes API provides access to our repository resources for your development needs.
|
||||
|
||||
## [GraphQL](/graphql/guide/getting-started/)
|
||||
|
||||
The AnimeThemes API selectively implements the [**GraphQL Tool**](https://graphql.org).
|
||||
|
||||
We provide an overview of where the AnimeThemes API adheres to or deviates from the specification.
|
||||
|
||||
## [Rate Limiting](/graphql/intro/ratelimiting/)
|
||||
|
||||
The AnimeThemes API applies the standard named rate limiter of the Laravel Framework.
|
||||
|
||||
We provide an overview of managing request quotas.
|
||||
|
||||
## Terms of Use
|
||||
|
||||
The AnimeThemes API applies the [**AnimeThemes Terms of Service**](https://animethemes.moe/about/terms-of-service).
|
||||
|
||||
## Resources
|
||||
|
||||
For API support, please make use of the **#api** channel in the [**Discord Server**](https://discordapp.com/invite/m9zbVyQ).
|
||||
|
||||
To report an issue with or request a new feature for the API, please make use of the [**animethemes-server**](https://github.com/AnimeThemes/animethemes-server) Github.
|
||||
|
||||
To report an issue with or request a new feature for this documentation, please make use of the [**animethemes-api-docs**](https://github.com/AnimeThemes/animethemes-api-docs) Github.
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
title: Rate Limiting
|
||||
---
|
||||
|
||||
# Rate Limiting
|
||||
|
||||
---
|
||||
|
||||
The AnimeThemes GraphQL API applies the standard named rate limiter of the Laravel Framework.
|
||||
|
||||
Here we will provide an overview of managing request quotas.
|
||||
|
||||
## Response Headers
|
||||
|
||||
The AnimeThemes GraphQL API limits 90 requests per minute.
|
||||
|
||||
The AnimeThemes API will return `X-RateLimit-Limit` and `X-RateLimit-Remaining` headers in the response.
|
||||
|
||||
```sh
|
||||
...
|
||||
X-RateLimit-Limit: 90
|
||||
X-RateLimit-Remaining: 89
|
||||
...
|
||||
```
|
||||
|
||||
## Exceeding the Rate Limit
|
||||
|
||||
If the rate limit is exceeded, the AnimeThemes API will return `Retry-After` and `X-RateLimit-Reset` headers in the response with a 429 status code.
|
||||
|
||||
```sh
|
||||
...
|
||||
X-RateLimit-Limit: 90
|
||||
X-RateLimit-Remaining: 0
|
||||
Retry-After: 60
|
||||
X-RateLimit-Reset: 1625073463180
|
||||
...
|
||||
```
|
||||
|
||||
Additionally, the AnimeThemes API will return an error message in the response body.
|
||||
|
||||
```json
|
||||
{
|
||||
message: "Too Many Attempts."
|
||||
}
|
||||
```
|
||||
|
||||
## Query Depth Limit
|
||||
|
||||
Clients can nest fields within other fields, which can quickly result in deeply nested queries.
|
||||
|
||||
The AnimeThemes GraphQL API enforces a maximum query depth of 13.
|
||||
|
||||
If your query exceeds this limit, the API will return a 200 status code with the following error response:
|
||||
|
||||
```json
|
||||
{
|
||||
"errors": [
|
||||
{
|
||||
"message": "Max query depth should be 13 but got 16."
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Query Complexity Limit
|
||||
|
||||
Clients can request a lot of fields, which can quickly result in a lot of heavy logic.
|
||||
|
||||
The AnimeThemes GraphQL API enforces a maximum of 10000 of complexity value.
|
||||
|
||||
If your query exceeds this limit, the API will return a 200 status code with the following error response:
|
||||
|
||||
```json
|
||||
{
|
||||
"errors": [
|
||||
{
|
||||
"message": "Max query complexity should be 10000 but got 15000."
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
::: warning
|
||||
The current complexity value is experimental and debatable. It may change.
|
||||
:::
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: Migrating from JSON:API
|
||||
---
|
||||
|
||||
# Migrating from JSON:PI
|
||||
|
||||
---
|
||||
|
||||
While writing the GraphQL API, it was decided to make some changes to follow the [best practices recommended by GraphQL](https://graphql.org/learn/best-practices/).
|
||||
|
||||
## Field names
|
||||
|
||||
Fields in the JSON:API are snake_case, but now it is camelCase instead.
|
||||
|
||||
Affected Fields:
|
||||
|
||||
* start_at -> startAt
|
||||
* end_at -> endAt
|
||||
* email_verified_at -> emailVerifiedAt
|
||||
* two_factor_confirmed_at -> twoFactorConfirmedAt
|
||||
* guard_name -> guardName (removed)
|
||||
* media_format -> format
|
||||
* external_id -> externalId
|
||||
* created_at -> createdAt
|
||||
* updated_at -> updatedAt
|
||||
* deleted_at -> deletedAt (removed)
|
||||
|
||||
## Artists to Performances
|
||||
|
||||
The AnimeThemes API now introduces a new way to credit artists for songs. Each artist associated with a song is represented as a performance.
|
||||
|
||||
With this updated schema, individual group members can now be credited directly on a song, rather than only the entire group being credited.
|
||||
|
||||
While you can retrieve all performances for a song through the `performances` relationship, the structure differs when viewed from the artist’s side.
|
||||
|
||||
Usual performances are typically available through the `performances` relationship. You may want to deduplicate the performances by the song's id, because it returns the information for each group-member relation.
|
||||
|
||||
If an artist is performing a song as part of a group, use the `memberPerformances` relationship.
|
||||
|
||||
Ideally you should use both and connect them on your code.
|
||||
|
||||
For more information, see the [wiki section on performances](https://animethemes.moe/wiki/guidelines/contribution#performances).
|
||||
|
||||
## From Group to ThemeGroup
|
||||
|
||||
It is easy to confuse what a group is. They can be a group of animethemes (e.g. "English Version") or a group of artists (e.g. "Aqours").
|
||||
|
||||
The `group` query/type does not exist. For a group of animethemes, the query is `themegroupPagination`. For a group of artists, they are included globally in the `artistPagination` query.
|
||||
+19
-15
@@ -11,27 +11,31 @@ hero:
|
||||
alt: Logo
|
||||
actions:
|
||||
- theme: brand
|
||||
text: Get Started
|
||||
link: /intro/
|
||||
text: Get Started with GraphQL
|
||||
link: /graphql/intro/
|
||||
- theme: alt
|
||||
text: GraphiQL
|
||||
link: https://graphql.animethemes.moe/graphiql
|
||||
- theme: alt
|
||||
text: Sandbox
|
||||
link: https://graphql.animethemes.moe/sandbox
|
||||
- theme: alt
|
||||
text: Get Started with JSON:API
|
||||
link: /intro
|
||||
features:
|
||||
- icon: 🔍
|
||||
title: Advanced Querying
|
||||
details: Support for randomization, searching and filtering by direct fields and relation fields out of the box
|
||||
link: /graphql/guide/filtering/
|
||||
linkText: GraphQL Example
|
||||
- icon: 📻
|
||||
title: Media Links
|
||||
details: Embed or download audio and video using links provided by resources
|
||||
link: /wiki/video/show/#response
|
||||
linkText: Example
|
||||
link: /content/video/show/#response
|
||||
linkText: JSON:API Example
|
||||
- icon: 🕸️
|
||||
title: External Mappings
|
||||
details: Find resources based on their mappings to sites like MyAnimeList or AniList
|
||||
link: /intro/jsonapi/#has-filter
|
||||
linkText: Example
|
||||
- icon: 🔍
|
||||
title: Advanced Querying
|
||||
details: Support for randomization, searching and filtering by direct fields and relation fields out of the box
|
||||
link: /intro/jsonapi/#filtering
|
||||
linkText: Example
|
||||
- icon: ✍️
|
||||
title: Resource Management
|
||||
details: Apply edits to our database (for users with requisite permissions)
|
||||
link: /wiki/anime/store/
|
||||
linkText: Example
|
||||
linkText: JSON:API Example
|
||||
---
|
||||
+3
-6
@@ -4,9 +4,9 @@ title: Announcement Destroy
|
||||
|
||||
# Announcement Destroy Endpoint
|
||||
|
||||
The announcement destroy endpoint soft deletes an announcement and returns the deleted announcement resource.
|
||||
The announcement destroy endpoint deletes an announcement and returns a confirmation message.
|
||||
|
||||
For example, the `/announcement/1` endpoint will soft delete the announcement of id '1' and return the deleted announcement resource.
|
||||
For example, the `/announcement/1` endpoint will delete the announcement of id '1' and return a confirmation message.
|
||||
|
||||
## URL
|
||||
|
||||
@@ -20,8 +20,6 @@ DELETE /announcement/{id}
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
**Other Requirements**: Announcement must not be soft deleted
|
||||
|
||||
## Parameters
|
||||
|
||||
None
|
||||
@@ -34,8 +32,7 @@ None
|
||||
id: id,
|
||||
content: "content",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
+2
-11
@@ -6,7 +6,7 @@ title: Announcement
|
||||
|
||||
---
|
||||
|
||||
An announcement API resource represents a site-wide message to be broadcasted on the homepage.
|
||||
An announcement API resource represents a site-wide message to be broadcasted on the homepage.
|
||||
|
||||
For example, if video streaming is disabled, the site staff may issue a "Video streaming has been disabled!" announcement.
|
||||
|
||||
@@ -18,7 +18,6 @@ For example, if video streaming is disabled, the site staff may issue a "Video s
|
||||
| content | String | No | Yes | The announcement text |
|
||||
| created_at | Date | No | No | The date that the resource was created |
|
||||
| updated_at | Date | No | No | The date that the resource was last modified |
|
||||
| deleted_at | Date | Yes | No | The date that the resource was deleted |
|
||||
|
||||
## Allowed Include Paths
|
||||
|
||||
@@ -28,20 +27,12 @@ None
|
||||
|
||||
**[Announcement Destroy](/admin/announcement/destroy/)**
|
||||
|
||||
The announcement destroy endpoint soft deletes an announcement and returns the deleted announcement resource.
|
||||
|
||||
**[Announcement Force Delete](/admin/announcement/forceDelete/)**
|
||||
|
||||
The announcement force delete endpoint hard deletes an announcement and returns a confirmation message.
|
||||
The announcement destroy endpoint deletes an announcement and returns a confirmation message.
|
||||
|
||||
**[Announcement Index](/admin/announcement/index/)**
|
||||
|
||||
The announcement index endpoint displays a listing of announcement resources.
|
||||
|
||||
**[Announcement Restore](/admin/announcement/restore/)**
|
||||
|
||||
The announcement restore endpoint restores a soft deleted announcement and returns the restored announcement resource.
|
||||
|
||||
**[Announcement Show](/admin/announcement/show/)**
|
||||
|
||||
The announcement show endpoint returns an announcement resource.
|
||||
+1
-5
@@ -34,7 +34,6 @@ None
|
||||
| content | Sort resources on the announcement text |
|
||||
| created_at | Sort resources on the resource creation date |
|
||||
| updated_at | Sort resources on the resource last modified date |
|
||||
| deleted_at | Sort resources on the resource deletion date |
|
||||
| random | Sort resources randomly. Ignored if other sort fields are provided. |
|
||||
|
||||
## Filters
|
||||
@@ -45,8 +44,6 @@ None
|
||||
| content | Filter resources on the announcement text |
|
||||
| created_at | Filter resources on the resource creation date |
|
||||
| updated_at | Filter resources on the resource last modified date |
|
||||
| deleted_at | Filter resources on the resource deletion date |
|
||||
| trashed | Filter resources on trashed (deleted) status [With, Without, Only] |
|
||||
|
||||
## Response
|
||||
|
||||
@@ -57,8 +54,7 @@ None
|
||||
id: id,
|
||||
content: "content",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
},
|
||||
...
|
||||
],
|
||||
+1
-2
@@ -30,8 +30,7 @@ None
|
||||
id: id,
|
||||
content: "content",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
+1
-2
@@ -34,8 +34,7 @@ POST /announcement
|
||||
id: id,
|
||||
content: "content",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
+1
-4
@@ -20,8 +20,6 @@ PUT|PATCH /announcement/{id}
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
**Other Requirements**: Announcement must not be soft deleted
|
||||
|
||||
## Parameters
|
||||
|
||||
| Name | Required | Rules |
|
||||
@@ -36,8 +34,7 @@ PUT|PATCH /announcement/{id}
|
||||
id: id,
|
||||
content: "content",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
+2
-5
@@ -4,9 +4,9 @@ title: Dump Destroy
|
||||
|
||||
# Dump Destroy Endpoint
|
||||
|
||||
The dump destroy endpoint soft deletes a dump and returns the deleted dump resource.
|
||||
The dump destroy endpoint deletes a dump and returns a confirmation message.
|
||||
|
||||
For example, the `/dump/1` endpoint will soft delete the dump of id '1' and return the deleted dump resource.
|
||||
For example, the `/dump/1` endpoint will delete the dump of id '1' and return a confirmation message.
|
||||
|
||||
## URL
|
||||
|
||||
@@ -20,8 +20,6 @@ DELETE /dump/{id}
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
**Other Requirements**: Dump must not be soft deleted
|
||||
|
||||
## Parameters
|
||||
|
||||
None
|
||||
@@ -35,7 +33,6 @@ None
|
||||
path: "path",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at",
|
||||
link: "link
|
||||
}
|
||||
}
|
||||
@@ -6,9 +6,9 @@ title: Dump
|
||||
|
||||
---
|
||||
|
||||
A dump API resource represents a database dump of selected tables at a given point in time.
|
||||
A dump API resource represents a database dump of selected tables at a given point in time.
|
||||
|
||||
For example, the animethemes-db-dump-wiki-1663559663946.sql dump represents the database dump of wiki tables performed at 2022-09-19.
|
||||
For example, the animethemes-db-dump-content-1663559663946.sql dump represents the database dump of content tables performed at 2022-09-19.
|
||||
|
||||
## Fields
|
||||
|
||||
@@ -18,7 +18,6 @@ For example, the animethemes-db-dump-wiki-1663559663946.sql dump represents the
|
||||
| path | String | No | Yes | The path of the file in storage |
|
||||
| created_at | Date | No | No | The date that the resource was created |
|
||||
| updated_at | Date | No | No | The date that the resource was last modified |
|
||||
| deleted_at | Date | Yes | No | The date that the resource was deleted |
|
||||
| link | String | No | Yes | The URL to download the file from storage |
|
||||
|
||||
## Allowed Include Paths
|
||||
@@ -29,20 +28,12 @@ None
|
||||
|
||||
**[Dump Destroy](/admin/dump/destroy/)**
|
||||
|
||||
The dump destroy endpoint soft deletes a dump and returns the deleted dump resource.
|
||||
|
||||
**[Dump Force Delete](/admin/dump/forceDelete/)**
|
||||
|
||||
The dump force delete endpoint hard deletes a dump and returns a confirmation message.
|
||||
The dump destroy endpoint deletes a dump and returns a confirmation message.
|
||||
|
||||
**[Dump Index](/admin/dump/index/)**
|
||||
|
||||
The dump index endpoint displays a listing of dump resources.
|
||||
|
||||
**[Dump Restore](/admin/dump/restore/)**
|
||||
|
||||
The dump restore endpoint restores a soft deleted dump and returns the restored dump resource.
|
||||
|
||||
**[Dump Show](/admin/dump/show/)**
|
||||
|
||||
The dump show endpoint returns a dump resource.
|
||||
@@ -34,7 +34,6 @@ None
|
||||
| path | Sort resources on the path of the file in storage |
|
||||
| created_at | Sort resources on the resource creation date |
|
||||
| updated_at | Sort resources on the resource last modified date |
|
||||
| deleted_at | Sort resources on the resource deletion date |
|
||||
| random | Sort resources randomly. Ignored if other sort fields are provided. |
|
||||
|
||||
## Filters
|
||||
@@ -45,8 +44,6 @@ None
|
||||
| path | Filter resources on the path of the file in storage |
|
||||
| created_at | Filter resources on the resource creation date |
|
||||
| updated_at | Filter resources on the resource last modified date |
|
||||
| deleted_at | Filter resources on the resource deletion date |
|
||||
| trashed | Filter resources on trashed (deleted) status [With, Without, Only] |
|
||||
|
||||
## Response
|
||||
|
||||
@@ -58,7 +55,6 @@ None
|
||||
path: "path",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at",
|
||||
link: "link"
|
||||
},
|
||||
...
|
||||
@@ -31,7 +31,6 @@ None
|
||||
path: "path",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at",
|
||||
link: "link"
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ title: Dump Store
|
||||
|
||||
The dump store endpoint creates a new dump and returns the new dump resource.
|
||||
|
||||
For example, the `/dump?path=animethemes-db-dump-wiki-1663559663946.sql` endpoint will create a new dump and return the new dump resource.
|
||||
For example, the `/dump?path=animethemes-db-dump-content-1663559663946.sql` endpoint will create a new dump and return the new dump resource.
|
||||
|
||||
## URL
|
||||
|
||||
@@ -35,7 +35,6 @@ POST /dump
|
||||
path: "path",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at",
|
||||
link: "link"
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ title: Dump Update
|
||||
|
||||
The dump update endpoint updates a dump and returns the updated dump resource.
|
||||
|
||||
For example, the `/dump/1?path=animethemes-db-dump-wiki-1663559663946.sql` endpoint will update the dump path attribute and return the updated dump resource.
|
||||
For example, the `/dump/1?path=animethemes-db-dump-content-1663559663946.sql` endpoint will update the dump path attribute and return the updated dump resource.
|
||||
|
||||
## URL
|
||||
|
||||
@@ -20,8 +20,6 @@ PUT|PATCH /dump/{id}
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
**Other Requirements**: Dump must not be soft deleted
|
||||
|
||||
## Parameters
|
||||
|
||||
| Name | Required | Rules |
|
||||
@@ -37,7 +35,6 @@ PUT|PATCH /dump/{id}
|
||||
path: "path",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at",
|
||||
link: "link"
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -34,8 +34,7 @@ None
|
||||
start_at: "start_at",
|
||||
end_at: "end_at",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
+3
-6
@@ -4,9 +4,9 @@ title: Featured Theme Destroy
|
||||
|
||||
# Featured Theme Destroy Endpoint
|
||||
|
||||
The featured theme destroy endpoint soft deletes a featured theme and returns the deleted featured theme resource.
|
||||
The featured theme destroy endpoint deletes a featured theme and returns a confirmation message.
|
||||
|
||||
For example, the `/featuredtheme/1` endpoint will soft delete the featured theme of id '1' and return the deleted featured theme resource.
|
||||
For example, the `/featuredtheme/1` endpoint will delete the featured theme of id '1' and return a confirmation message.
|
||||
|
||||
## URL
|
||||
|
||||
@@ -20,8 +20,6 @@ DELETE /featuredtheme/{id}
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
**Other Requirements**: Featured Theme must not be soft deleted
|
||||
|
||||
## Parameters
|
||||
|
||||
None
|
||||
@@ -35,8 +33,7 @@ None
|
||||
start_at: "start_at",
|
||||
end_at: "end_at",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
+1
-10
@@ -17,7 +17,6 @@ A featured theme API resource represents a video to be featured on the homepage
|
||||
| end_at | Date | No | Yes | The end date of the resource |
|
||||
| created_at | Date | No | No | The date that the resource was created |
|
||||
| updated_at | Date | No | No | The date that the resource was last modified |
|
||||
| deleted_at | Date | Yes | No | The date that the resource was deleted |
|
||||
|
||||
## Allowed Include Paths
|
||||
|
||||
@@ -39,20 +38,12 @@ The current featured theme show endpoint returns the first featured theme where
|
||||
|
||||
**[Featured Theme Destroy](/admin/featuredtheme/destroy/)**
|
||||
|
||||
The featured theme destroy endpoint soft deletes a featured theme and returns the deleted featured theme resource.
|
||||
|
||||
**[Featured Theme Force Delete](/admin/featuredtheme/forceDelete/)**
|
||||
|
||||
The featured theme force delete endpoint hard deletes a featured theme and returns a confirmation message.
|
||||
The featured theme destroy endpoint deletes a featured theme and returns a confirmation message.
|
||||
|
||||
**[Featured Theme Index](/admin/featuredtheme/index/)**
|
||||
|
||||
The featured theme index endpoint displays a listing of featured theme resources.
|
||||
|
||||
**[Featured Theme Restore](/admin/featuredtheme/restore/)**
|
||||
|
||||
The featured theme restore endpoint restores a soft deleted featured theme and returns the restored featured theme resource.
|
||||
|
||||
**[Featured Theme Show](/admin/featuredtheme/show/)**
|
||||
|
||||
The featured theme show endpoint returns a featured theme resource.
|
||||
+1
-5
@@ -35,7 +35,6 @@ None
|
||||
| end_at | Sort resources on the resource end date |
|
||||
| created_at | Sort resources on the resource creation date |
|
||||
| updated_at | Sort resources on the resource last modified date |
|
||||
| deleted_at | Sort resources on the resource deletion date |
|
||||
| random | Sort resources randomly. Ignored if other sort fields are provided. |
|
||||
|
||||
## Filters
|
||||
@@ -47,8 +46,6 @@ None
|
||||
| end_at | Filter resources on the resource end date |
|
||||
| created_at | Filter resources on the resource creation date |
|
||||
| updated_at | Filter resources on the resource last modified date |
|
||||
| deleted_at | Filter resources on the resource deletion date |
|
||||
| trashed | Filter resources on trashed (deleted) status [With, Without, Only] |
|
||||
|
||||
## Response
|
||||
|
||||
@@ -60,8 +57,7 @@ None
|
||||
start_at: "start_at",
|
||||
end_at: "end_at",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
},
|
||||
...
|
||||
],
|
||||
+1
-2
@@ -34,8 +34,7 @@ GET /featuredtheme/{id}
|
||||
start_at: "start_at",
|
||||
end_at: "end_at",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
+1
-2
@@ -39,8 +39,7 @@ POST /featuredtheme
|
||||
start_at: "start_at",
|
||||
end_at: "end_at",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
+1
-4
@@ -20,8 +20,6 @@ PUT|PATCH /featuredtheme/{id}
|
||||
|
||||
**Roles with Permission**: Admin
|
||||
|
||||
**Other Requirements**: Featured Theme must not be soft deleted
|
||||
|
||||
## Parameters
|
||||
|
||||
| Name | Required | Rules |
|
||||
@@ -41,8 +39,7 @@ PUT|PATCH /featuredtheme/{id}
|
||||
start_at: "start_at",
|
||||
end_at: "end_at",
|
||||
created_at: "created_at",
|
||||
updated_at: "updated_at",
|
||||
deleted_at: "deleted_at"
|
||||
updated_at: "updated_at"
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -14,6 +14,5 @@ A permission API resource represents an assignable label for users and roles tha
|
||||
| :--------: | :-----: | :------: | :-----: | :------------------------------------------- |
|
||||
| id | Integer | No | Yes | The primary key of the resource |
|
||||
| name | String | No | Yes | The label of the resource |
|
||||
| guard_name | String | No | Yes | The authentication guard of the resource |
|
||||
| created_at | Date | No | No | The date that the resource was created |
|
||||
| updated_at | Date | No | No | The date that the resource was last modified |
|
||||
@@ -14,7 +14,6 @@ A role API resource represents an assignable label for users that provides a con
|
||||
| :--------: | :-----: | :------: | :-----: | :------------------------------------------------------------------------------------- |
|
||||
| id | Integer | No | Yes | The primary key of the resource |
|
||||
| name | String | No | Yes | The label of the resource |
|
||||
| guard_name | String | No | Yes | The authentication guard of the resource |
|
||||
| default | Boolean | No | Yes | Is the role assigned on account verification? |
|
||||
| color | String | Yes | Yes | The hex representation of the color used to distinguish the resource |
|
||||
| priority | Integer | Yes | Yes | The weight assigned to the resource, where higher values correspond to higher priority |
|
||||
+1
-1
@@ -18,7 +18,7 @@ DELETE /anime/{slug}
|
||||
|
||||
**Required Permission**: delete anime
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
**Other Requirements**: Anime must not be soft deleted
|
||||
|
||||
@@ -36,6 +36,9 @@ For example, Bakemonogatari is an anime production with five opening sequences a
|
||||
* animethemes.group
|
||||
* animethemes.song
|
||||
* animethemes.song.artists
|
||||
* animethemes.song.performances
|
||||
* animethemes.song.performances.artist
|
||||
* animethemes.song.performances.member
|
||||
* images
|
||||
* resources
|
||||
* series
|
||||
@@ -47,38 +50,38 @@ For example, Bakemonogatari is an anime production with five opening sequences a
|
||||
|
||||
## Endpoints
|
||||
|
||||
**[Anime Destroy](/wiki/anime/destroy/)**
|
||||
**[Anime Destroy](/content/anime/destroy/)**
|
||||
|
||||
The anime destroy endpoint soft deletes an anime and returns the deleted anime resource.
|
||||
|
||||
**[Anime Force Delete](/wiki/anime/forceDelete/)**
|
||||
**[Anime Force Delete](/content/anime/forceDelete/)**
|
||||
|
||||
The anime force delete endpoint hard deletes an anime and returns a confirmation message.
|
||||
|
||||
**[Anime Index](/wiki/anime/index/)**
|
||||
**[Anime Index](/content/anime/index/)**
|
||||
|
||||
The anime index endpoint displays a listing of anime resources.
|
||||
|
||||
**[Anime Restore](/wiki/anime/restore/)**
|
||||
**[Anime Restore](/content/anime/restore/)**
|
||||
|
||||
The anime restore endpoint restores a soft deleted anime and returns the restored anime resource.
|
||||
|
||||
**[Anime Show](/wiki/anime/show/)**
|
||||
**[Anime Show](/content/anime/show/)**
|
||||
|
||||
The anime show endpoint returns an anime resource.
|
||||
|
||||
**[Anime Store](/wiki/anime/store/)**
|
||||
**[Anime Store](/content/anime/store/)**
|
||||
|
||||
The anime store endpoint creates a new anime and returns the new anime resource.
|
||||
|
||||
**[Anime Update](/wiki/anime/update/)**
|
||||
**[Anime Update](/content/anime/update/)**
|
||||
|
||||
The anime update endpoint updates an anime and returns the updated anime resource.
|
||||
|
||||
**[Year Show](/wiki/animeyear/show/)**
|
||||
**[Year Show](/content/animeyear/show/)**
|
||||
|
||||
The year show endpoint return a listing of anime resources for a given year grouped by season and ordered by name.
|
||||
|
||||
**[Year Index](/wiki/animeyear/index/)**
|
||||
**[Year Index](/content/animeyear/index/)**
|
||||
|
||||
The year index endpoint returns a list of unique years from all anime resources.
|
||||
+1
-1
@@ -18,7 +18,7 @@ PATCH /restore/anime/{slug}
|
||||
|
||||
**Required Permission**: restore anime
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
**Other Requirements**: Anime must be soft deleted
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ POST /anime
|
||||
|
||||
**Required Permission**: create anime
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ PUT|PATCH /anime/{slug}
|
||||
|
||||
**Required Permission**: update anime
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
**Other Requirements**: Anime must not be soft deleted
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Anime Image
|
||||
---
|
||||
|
||||
# Anime Image
|
||||
|
||||
---
|
||||
|
||||
An anime image API resource represents the association between an anime and an image.
|
||||
|
||||
## Fields
|
||||
|
||||
| Name | Type | Nullable | Default | Description |
|
||||
| :--------: | :-----: | :------: | :-----: | :------------------------------------------- |
|
||||
| created_at | Date | No | No | The date that the resource was created |
|
||||
| updated_at | Date | No | No | The date that the resource was last modified |
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Anime Resource
|
||||
---
|
||||
|
||||
# Anime Resource
|
||||
|
||||
---
|
||||
|
||||
An anime resource API resource represents the association between an anime and an external resource.
|
||||
|
||||
## Fields
|
||||
|
||||
| Name | Type | Nullable | Default | Description |
|
||||
| :--------: | :-----: | :------: | :-----: | :------------------------------------------------------- |
|
||||
| created_at | Date | No | No | The date that the resource was created |
|
||||
| updated_at | Date | No | No | The date that the resource was last modified |
|
||||
| as | String | No | Yes | Used to distinguish resources that map to the same anime |
|
||||
+1
-1
@@ -18,7 +18,7 @@ DELETE /animeseries/{anime:slug}/{series:slug}
|
||||
|
||||
**Required Permission**: delete anime, delete series
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
+4
-4
@@ -22,18 +22,18 @@ An anime series API resource represents the association between an anime and a s
|
||||
|
||||
## Endpoints
|
||||
|
||||
**[Anime Series Destroy](/wiki/animeseries/destroy/)**
|
||||
**[Anime Series Destroy](/content/animeseries/destroy/)**
|
||||
|
||||
The anime series destroy endpoint deletes an anime series and returns the deleted anime series resource.
|
||||
|
||||
**[Anime Series Index](/wiki/animeseries/index/)**
|
||||
**[Anime Series Index](/content/animeseries/index/)**
|
||||
|
||||
The anime series index endpoint displays a listing of anime series resources.
|
||||
|
||||
**[Anime Series Show](/wiki/animeseries/show/)**
|
||||
**[Anime Series Show](/content/animeseries/show/)**
|
||||
|
||||
The anime series show endpoint returns an anime series resource.
|
||||
|
||||
**[Anime Series Store](/wiki/animeseries/store/)**
|
||||
**[Anime Series Store](/content/animeseries/store/)**
|
||||
|
||||
The anime series store endpoint creates a new anime series and returns the new anime series resource.
|
||||
+1
-1
@@ -18,7 +18,7 @@ POST /animeseries/{anime:slug}/{series:slug}
|
||||
|
||||
**Required Permission**: create anime, create series
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ DELETE /animestudio/{anime:slug}/{studio:slug}
|
||||
|
||||
**Required Permission**: delete anime, delete studio
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
+4
-4
@@ -22,18 +22,18 @@ An anime studio API resource represents the association between an anime and a s
|
||||
|
||||
## Endpoints
|
||||
|
||||
**[Anime Studio Destroy](/wiki/animestudio/destroy/)**
|
||||
**[Anime Studio Destroy](/content/animestudio/destroy/)**
|
||||
|
||||
The anime studio destroy endpoint deletes an anime studio and returns the deleted anime studio resource.
|
||||
|
||||
**[Anime Studio Index](/wiki/animestudio/index/)**
|
||||
**[Anime Studio Index](/content/animestudio/index/)**
|
||||
|
||||
The anime studio index endpoint displays a listing of anime studio resources.
|
||||
|
||||
**[Anime Studio Show](/wiki/animestudio/show/)**
|
||||
**[Anime Studio Show](/content/animestudio/show/)**
|
||||
|
||||
The anime studio show endpoint returns an anime studio resource.
|
||||
|
||||
**[Anime Studio Store](/wiki/animestudio/store/)**
|
||||
**[Anime Studio Store](/content/animestudio/store/)**
|
||||
|
||||
The anime studio store endpoint creates a new anime studio and returns the new anime studio resource.
|
||||
+1
-1
@@ -18,7 +18,7 @@ POST /animestudio/{anime:slug}/{studio:slug}
|
||||
|
||||
**Required Permission**: create anime, create studio
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ DELETE /animesynonym/{id}
|
||||
|
||||
**Required Permission**: delete anime synonym
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
**Other Requirements**: Anime synonym must not be soft deleted
|
||||
|
||||
+7
-7
@@ -27,30 +27,30 @@ For example, the anime Bakemonogatari has the anime synonym "Monstory".
|
||||
|
||||
## Endpoints
|
||||
|
||||
**[Anime Synonym Destroy](/wiki/animesynonym/destroy/)**
|
||||
**[Anime Synonym Destroy](/content/animesynonym/destroy/)**
|
||||
|
||||
The anime synonym destroy endpoint soft deletes an anime synonym and returns the deleted anime synonym resource.
|
||||
|
||||
**[Anime Synonym Force Delete](/wiki/animesynonym/forceDelete/)**
|
||||
**[Anime Synonym Force Delete](/content/animesynonym/forceDelete/)**
|
||||
|
||||
The anime synonym force delete endpoint hard deletes an anime synonym and returns a confirmation message.
|
||||
|
||||
**[Anime Synonym Index](/wiki/animesynonym/index/)**
|
||||
**[Anime Synonym Index](/content/animesynonym/index/)**
|
||||
|
||||
The anime synonym index endpoint displays a listing of anime synonym resources.
|
||||
|
||||
**[Anime Synonym Restore](/wiki/animesynonym/restore/)**
|
||||
**[Anime Synonym Restore](/content/animesynonym/restore/)**
|
||||
|
||||
The anime synonym restore endpoint restores a soft deleted anime synonym and returns the restored anime synonym resource.
|
||||
|
||||
**[Anime Synonym Show](/wiki/animesynonym/show/)**
|
||||
**[Anime Synonym Show](/content/animesynonym/show/)**
|
||||
|
||||
The anime synonym show endpoint returns an anime synonym resource.
|
||||
|
||||
**[Anime Synonym Store](/wiki/animesynonym/store/)**
|
||||
**[Anime Synonym Store](/content/animesynonym/store/)**
|
||||
|
||||
The anime synonym store endpoint creates a new anime synonym and returns the new anime synonym resource.
|
||||
|
||||
**[Anime Synonym Update](/wiki/animesynonym/update/)**
|
||||
**[Anime Synonym Update](/content/animesynonym/update/)**
|
||||
|
||||
The anime synonym update endpoint updates an anime synonym and returns the updated anime synonym resource.
|
||||
+1
-1
@@ -18,7 +18,7 @@ PATCH /restore/animesynonym/{id}
|
||||
|
||||
**Required Permission**: restore anime synonym
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
**Other Requirements**: Synonym must be soft deleted
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ POST /animesynonym
|
||||
|
||||
**Required Permission**: create anime synonym
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ PUT|PATCH /animesynonym/{id}
|
||||
|
||||
**Required Permission**: update anime synonym
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
**Other Requirements**: Anime synonym must not be soft deleted
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ DELETE /animetheme/{id}
|
||||
|
||||
**Required Permission**: delete anime theme
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
**Other Requirements**: Anime theme must not be soft deleted
|
||||
|
||||
@@ -34,30 +34,30 @@ For example, the anime Bakemonogatari has five OP anime themes and one ED anime
|
||||
|
||||
## Endpoints
|
||||
|
||||
**[Anime Theme Destroy](/wiki/animetheme/destroy/)**
|
||||
**[Anime Theme Destroy](/content/animetheme/destroy/)**
|
||||
|
||||
The anime theme destroy endpoint soft deletes an anime theme and returns the deleted anime theme resource.
|
||||
|
||||
**[Anime Theme Force Delete](/wiki/animetheme/forceDelete/)**
|
||||
**[Anime Theme Force Delete](/content/animetheme/forceDelete/)**
|
||||
|
||||
The anime theme force delete endpoint hard deletes an anime theme and returns a confirmation message.
|
||||
|
||||
**[Anime Theme Index](/wiki/animetheme/index/)**
|
||||
**[Anime Theme Index](/content/animetheme/index/)**
|
||||
|
||||
The anime theme index endpoint displays a listing of anime theme resources.
|
||||
|
||||
**[Anime Theme Restore](/wiki/animetheme/restore/)**
|
||||
**[Anime Theme Restore](/content/animetheme/restore/)**
|
||||
|
||||
The anime theme restore endpoint restores a soft deleted anime theme and returns the restored anime theme resource.
|
||||
|
||||
**[Anime Theme Show](/wiki/animetheme/show/)**
|
||||
**[Anime Theme Show](/content/animetheme/show/)**
|
||||
|
||||
The anime theme show endpoint returns an anime theme resource.
|
||||
|
||||
**[Anime Theme Store](/wiki/animetheme/store/)**
|
||||
**[Anime Theme Store](/content/animetheme/store/)**
|
||||
|
||||
The anime theme store endpoint creates a new anime theme and returns the new anime theme resource.
|
||||
|
||||
**[Anime Theme Update](/wiki/animetheme/update/)**
|
||||
**[Anime Theme Update](/content/animetheme/update/)**
|
||||
|
||||
The anime theme update endpoint updates an anime theme and returns the updated anime theme resource.
|
||||
+1
-1
@@ -18,7 +18,7 @@ PATCH /restore/animetheme/{id}
|
||||
|
||||
**Required Permission**: restore anime theme
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
**Other Requirements**: Theme must be soft deleted
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ POST /animetheme
|
||||
|
||||
**Required Permission**: create anime theme
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
## Parameters
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ PUT|PATCH /animetheme/{id}
|
||||
|
||||
**Required Permission**: update anime theme
|
||||
|
||||
**Roles with Permission**: Wiki Editor, Encoder, Admin
|
||||
**Roles with Permission**: Content Moderator, Encoder, Admin
|
||||
|
||||
**Other Requirements**: Anime theme must not be soft deleted
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user