mirror of
https://github.com/markbeep/AudioBookRequest.git
synced 2026-01-24 15:09:58 -06:00
579 lines
39 KiB
HTML
579 lines
39 KiB
HTML
<!doctype html>
|
|
<html itemscope itemtype="http://schema.org/WebPage" lang="en" class="no-js">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<link rel="canonical" type="text/html" href="https://markbeep.github.io/AudioBookRequest/docs/tutorials/">
|
|
<link rel="alternate" type="application/rss+xml" href="https://markbeep.github.io/AudioBookRequest/docs/tutorials/index.xml">
|
|
<meta name="robots" content="noindex, nofollow">
|
|
|
|
|
|
<link rel="shortcut icon" href="/AudioBookRequest/favicons/favicon.ico" >
|
|
<link rel="apple-touch-icon" href="/AudioBookRequest/favicons/apple-touch-icon-180x180.png" sizes="180x180">
|
|
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/favicon-16x16.png" sizes="16x16">
|
|
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/favicon-32x32.png" sizes="32x32">
|
|
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-36x36.png" sizes="36x36">
|
|
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-48x48.png" sizes="48x48">
|
|
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-72x72.png" sizes="72x72">
|
|
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-96x96.png" sizes="96x96">
|
|
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-144x144.png" sizes="144x144">
|
|
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-192x192.png" sizes="192x192">
|
|
|
|
<title>Tutorials | AudioBookRequest Docs</title>
|
|
<meta name="description" content="Tutorials about how to setup certain features with more detail.">
|
|
<meta property="og:url" content="https://markbeep.github.io/AudioBookRequest/docs/tutorials/">
|
|
<meta property="og:site_name" content="AudioBookRequest Docs">
|
|
<meta property="og:title" content="Tutorials">
|
|
<meta property="og:description" content="Tutorials about how to setup certain features with more detail.">
|
|
<meta property="og:locale" content="en">
|
|
<meta property="og:type" content="website">
|
|
|
|
<meta itemprop="name" content="Tutorials">
|
|
<meta itemprop="description" content="Tutorials about how to setup certain features with more detail.">
|
|
<meta itemprop="datePublished" content="2025-06-09T13:47:04+02:00">
|
|
<meta itemprop="dateModified" content="2025-08-22T15:01:53+02:00">
|
|
<meta name="twitter:card" content="summary">
|
|
<meta name="twitter:title" content="Tutorials">
|
|
<meta name="twitter:description" content="Tutorials about how to setup certain features with more detail.">
|
|
<link href="/AudioBookRequest/scss/main.css" rel="stylesheet">
|
|
<script
|
|
src="https://code.jquery.com/jquery-3.7.1.min.js"
|
|
integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g=="
|
|
crossorigin="anonymous"></script>
|
|
|
|
</head>
|
|
<body class="td-section">
|
|
<header>
|
|
<nav class="td-navbar js-navbar-scroll" data-bs-theme="dark">
|
|
<div class="container-fluid flex-column flex-md-row">
|
|
<a class="navbar-brand" href="/AudioBookRequest/"><span class="navbar-brand__logo navbar-logo"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500"><g><path style="fill:#fff" d="M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z"/><g><g><g><path style="fill:#767676" d="M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z"/></g></g></g><g><g><path style="fill:#5b7fc0" d="M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z"/><path style="opacity:.3;fill:#fff" d="M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z"/><g><defs><path id="SVGID_1_" d="M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z"/></defs><clipPath id="SVGID_2_"><use xlink:href="#SVGID_1_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_2_);fill:#fff" d="M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z"/><path style="opacity:.13;clip-path:url(#SVGID_2_);fill:#020202" d="M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z"/></g><g><defs><path id="SVGID_3_" d="M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z"/></defs><clipPath id="SVGID_4_"><use xlink:href="#SVGID_3_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_4_);fill:#5b7fc0" d="M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z"/></g></g><rect x="198.8952" y="225.1043" style="fill:#5b7fc0" width="122.6266" height="13.8671"/></g><g><path style="fill:#d95140" d="M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zm7.993 21.8577c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z"/><path style="opacity:.3;fill:#fff" d="M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zm7.9941 21.8613c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z"/><g><defs><path id="SVGID_5_" d="M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z"/></defs><clipPath id="SVGID_6_"><use xlink:href="#SVGID_5_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_6_);fill:#fff" d="M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z"/><path style="opacity:.13;clip-path:url(#SVGID_6_);fill:#020202" d="M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z"/></g><g><defs><path id="SVGID_7_" d="M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zm7.9941 21.8613c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z"/></defs><clipPath id="SVGID_8_"><use xlink:href="#SVGID_7_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_8_);fill:#d95140" d="M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z"/></g><rect x="198.8952" y="170.69" style="fill:#d95140" width="122.6266" height="13.8671"/></g><g><g><path style="fill:#56a55c" d="M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z"/><path style="opacity:.3;fill:#fff" d="M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z"/><g><defs><path id="SVGID_9_" d="M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z"/></defs><clipPath id="SVGID_10_"><use xlink:href="#SVGID_9_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_10_);fill:#fff" d="M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z"/><path style="opacity:.13;clip-path:url(#SVGID_10_);fill:#020202" d="M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z"/></g><g><defs><path id="SVGID_11_" d="M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z"/></defs><clipPath id="SVGID_12_"><use xlink:href="#SVGID_11_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_12_);fill:#56a55c" d="M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z"/></g></g><rect x="199.3456" y="279.5436" style="fill:#56a55c" width="122.6266" height="13.8671"/></g><g><g><path style="fill:#f1bc42" d="M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z"/><path style="opacity:.3;fill:#fff" d="M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z"/><g><defs><path id="SVGID_13_" d="M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z"/></defs><clipPath id="SVGID_14_"><use xlink:href="#SVGID_13_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_14_);fill:#fff" d="M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z"/><path style="opacity:.13;clip-path:url(#SVGID_14_);fill:#020202" d="M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z"/></g><g><defs><path id="SVGID_15_" d="M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z"/></defs><clipPath id="SVGID_16_"><use xlink:href="#SVGID_15_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_16_);fill:#f1bc42" d="M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z"/></g></g><rect x="198.8952" y="333.6497" style="fill:#f1bc42" width="122.6266" height="13.8671"/></g></g></svg></span><span class="navbar-brand__name">AudioBookRequest Docs</span></a>
|
|
<div class="td-navbar-nav-scroll ms-md-auto" id="main_navbar">
|
|
<ul class="navbar-nav">
|
|
<li class="nav-item">
|
|
<a class="nav-link active" href="/AudioBookRequest/docs/"><span>Documentation</span></a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="/AudioBookRequest/community/"><span>Community</span></a>
|
|
</li>
|
|
<li class="td-light-dark-menu nav-item dropdown">
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="d-none">
|
|
<symbol id="check2" viewBox="0 0 16 16">
|
|
<path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/>
|
|
</symbol>
|
|
<symbol id="circle-half" viewBox="0 0 16 16">
|
|
<path d="M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/>
|
|
</symbol>
|
|
<symbol id="moon-stars-fill" viewBox="0 0 16 16">
|
|
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z"/>
|
|
<path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z"/>
|
|
</symbol>
|
|
<symbol id="sun-fill" viewBox="0 0 16 16">
|
|
<path d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/>
|
|
</symbol>
|
|
</svg>
|
|
|
|
<button class="btn btn-link nav-link dropdown-toggle d-flex align-items-center"
|
|
id="bd-theme"
|
|
type="button"
|
|
aria-expanded="false"
|
|
data-bs-toggle="dropdown"
|
|
data-bs-display="static"
|
|
aria-label="Toggle theme (auto)">
|
|
<svg class="bi my-1 theme-icon-active"><use href="#circle-half"></use></svg>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-theme-text">
|
|
<li>
|
|
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="light" aria-pressed="false">
|
|
<svg class="bi me-2 opacity-50"><use href="#sun-fill"></use></svg>
|
|
Light
|
|
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="dark" aria-pressed="false">
|
|
<svg class="bi me-2 opacity-50"><use href="#moon-stars-fill"></use></svg>
|
|
Dark
|
|
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<button type="button" class="dropdown-item d-flex align-items-center active" data-bs-theme-value="auto" aria-pressed="true">
|
|
<svg class="bi me-2 opacity-50"><use href="#circle-half"></use></svg>
|
|
Auto
|
|
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="d-none d-lg-block">
|
|
<div class="td-search">
|
|
<div class="td-search__icon"></div>
|
|
<input type="search" class="td-search__input form-control td-search-input" placeholder="Search this site…" aria-label="Search this site…" autocomplete="off">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
</header>
|
|
<div class="container-fluid td-outer">
|
|
<div class="td-main">
|
|
<div class="row flex-xl-nowrap">
|
|
<main class="col-12 col-md-9 col-xl-8 ps-md-5" role="main">
|
|
|
|
|
|
|
|
|
|
|
|
<div class="td-content">
|
|
<div class="pageinfo pageinfo-primary d-print-none">
|
|
<p>
|
|
This is the multi-page printable view of this section.
|
|
<a href="#" onclick="print();return false;">Click here to print</a>.
|
|
</p><p>
|
|
<a href="/AudioBookRequest/docs/tutorials/">Return to the regular view of this page</a>.
|
|
</p>
|
|
</div>
|
|
|
|
|
|
|
|
<h1 class="title">Tutorials</h1>
|
|
<div class="lead">Tutorials about how to setup certain features with more detail.</div>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>1: <a href="#pg-e6c24feb23bd7b96e22e8ed3e8a6d652">Notifications</a></li>
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
<li>2: <a href="#pg-eb0b8b2f51c3e22c9b2de4770486ca52">API</a></li>
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>2.1: <a href="#pg-3e4cf7e150c25ad9c46b6de4e314451e">Indexers</a></li>
|
|
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
<li>3: <a href="#pg-70cac3f21ec9ace937ed903becc9f4ca">OpenID Connect</a></li>
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<div class="content">
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="td-content" style="">
|
|
|
|
<h1 id="pg-e6c24feb23bd7b96e22e8ed3e8a6d652">1 - Notifications</h1>
|
|
<div class="lead">How to send notifications.</div>
|
|
<p>Notifications allow you to send a POST request/webhook wherever you want. ABR
|
|
works with all major notification systems like apprise, gotify, ntfy, and
|
|
discord.</p>
|
|
<p>Here are a few examples for how the notifications body looks for different
|
|
notification systems:</p>
|
|
<h2 id="apprise">Apprise<a class="td-heading-self-link" href="#apprise" aria-label="Heading self-link"></a></h2>
|
|
<p>For apprise you’ll want to have the title in <code>"title"</code> and the message body in
|
|
<code>"body"</code>.</p>
|
|
<p><img src="/AudioBookRequest/docs/tutorials/notifications/apprise.png" alt="Apprise"></p>
|
|
<h2 id="gotify">Gotify<a class="td-heading-self-link" href="#gotify" aria-label="Heading self-link"></a></h2>
|
|
<p>For gotify you’ll want to have the title in <code>"title"</code> and the message body in
|
|
<code>"message"</code>. Gotify also requires you to pass in your authorization token in the
|
|
header.</p>
|
|
<p><img src="/AudioBookRequest/docs/tutorials/notifications/gotify.png" alt="Gotify"></p>
|
|
<h2 id="ntfy">Ntfy<a class="td-heading-self-link" href="#ntfy" aria-label="Heading self-link"></a></h2>
|
|
<p>Ntfy does not differentiate between title and body. You’ll want to select the
|
|
<code>text</code> body type and then add your message.</p>
|
|
<p><img src="/AudioBookRequest/docs/tutorials/notifications/ntfy.png" alt="ntfy"></p>
|
|
<h2 id="discord">Discord<a class="td-heading-self-link" href="#discord" aria-label="Heading self-link"></a></h2>
|
|
<p>You can send notifications to discord by using webhooks. Discord allows you to
|
|
send plain messages or create bigger messages with embeds.</p>
|
|
<p>To make better looking webhook messages you can also use a message builder like
|
|
one of the following pages:</p>
|
|
<ul>
|
|
<li><a href="https://message.style/app/editor">https://message.style/app/editor</a> (Copy the JSON code)</li>
|
|
<li><a href="https://discohook.app">https://discohook.app</a> (<code>Options>JSON Editor</code> to export)</li>
|
|
</ul>
|
|
<p><img src="/AudioBookRequest/docs/tutorials/notifications/discord.png" alt="Discord"></p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="td-content" style="page-break-before: always">
|
|
|
|
<h1 id="pg-eb0b8b2f51c3e22c9b2de4770486ca52">2 - API</h1>
|
|
<div class="lead">How to use the AudioBookRequest API</div>
|
|
<h2 id="overview">Overview<a class="td-heading-self-link" href="#overview" aria-label="Heading self-link"></a></h2>
|
|
<p>AudioBookRequest provides a RESTful API for a select few endpoints.</p>
|
|
<p>The API uses Bearer token authentication with API keys that can be generated
|
|
through the web interface.</p>
|
|
<h2 id="how-to-create-an-api-key">How to Create an API Key<a class="td-heading-self-link" href="#how-to-create-an-api-key" aria-label="Heading self-link"></a></h2>
|
|
<p>Follow these steps to create an API key for accessing the AudioBookRequest API:</p>
|
|
<ol>
|
|
<li>In the Account settings page, look for the <strong>API Keys</strong> section</li>
|
|
<li>Enter a unique name for your API key</li>
|
|
<li>Click on <strong>Create API Key</strong></li>
|
|
<li><strong>Important</strong>: The API key will only be displayed once for security reasons</li>
|
|
<li>Copy the generated API key immediately and store it in a secure location</li>
|
|
<li>If you lose the key, you’ll need to generate a new one</li>
|
|
</ol>
|
|
<h3 id="use-your-api-key">Use Your API Key<a class="td-heading-self-link" href="#use-your-api-key" aria-label="Heading self-link"></a></h3>
|
|
<p>Include your API key in the Authorization header of your API requests:</p>
|
|
<pre tabindex="0"><code>Authorization: Bearer <your-api-key>
|
|
</code></pre><p><strong>Example using cURL:</strong></p>
|
|
<div class="highlight"><pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -H <span style="color:#63c381">"Authorization: Bearer <your-api-key-here>"</span> https://abr.example.com/api/users/me
|
|
</span></span></code></pre></div><h2 id="api-documentation">API Documentation<a class="td-heading-self-link" href="#api-documentation" aria-label="Heading self-link"></a></h2>
|
|
<p>For a SwaggerUI documentation with interactive testing capabilities:</p>
|
|
<ol>
|
|
<li>Set the environment variable <code>ABR_APP__OPENAPI_ENABLED=true</code></li>
|
|
<li>Head to <code><your-domain>/docs</code>.</li>
|
|
</ol>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="td-content" style="page-break-before: always">
|
|
|
|
<h1 id="pg-3e4cf7e150c25ad9c46b6de4e314451e">2.1 - Indexers</h1>
|
|
<div class="lead">Using the API to access/update indexers</div>
|
|
<p>There are two main endpoints to work with indexers:</p>
|
|
<ul>
|
|
<li>A <code>PATCH</code> to update indexer settings.</li>
|
|
<li>A <code>GET</code> to get all the available configuration settings for the indexers.</li>
|
|
</ul>
|
|
<p>Head to the main <a href="/AudioBookRequest/docs/tutorials/api/">API Docs</a> to see how you can access the SwaggerUI
|
|
and more easily test the endpoints.</p>
|
|
<h2 id="getting-the-indexer-configurations">Getting the Indexer Configurations<a class="td-heading-self-link" href="#getting-the-indexer-configurations" aria-label="Heading self-link"></a></h2>
|
|
<p>To figure out what values you need to adjust, <code>GET</code> the endpoint
|
|
<code>/api/indexers/configurations</code>.</p>
|
|
<p>This will give you something along the lines of this:</p>
|
|
<div class="highlight"><pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"MyAnonamouse"</span>: [
|
|
</span></span><span style="display:flex;"><span> {
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"name"</span>: <span style="color:#63c381">"mam_session_id"</span>,
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"description"</span>: <span style="color:#b756ff;font-weight:bold">null</span>,
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"default"</span>: <span style="color:#b756ff;font-weight:bold">null</span>,
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"required"</span>: <span style="color:#b756ff;font-weight:bold">true</span>,
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"type"</span>: <span style="color:#63c381">"str"</span>
|
|
</span></span><span style="display:flex;"><span> },
|
|
</span></span><span style="display:flex;"><span> {
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"name"</span>: <span style="color:#63c381">"mam_active"</span>,
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"description"</span>: <span style="color:#b756ff;font-weight:bold">null</span>,
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"default"</span>: <span style="color:#63c381">"True"</span>,
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"required"</span>: <span style="color:#b756ff;font-weight:bold">false</span>,
|
|
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">"type"</span>: <span style="color:#63c381">"bool"</span>
|
|
</span></span><span style="display:flex;"><span> }
|
|
</span></span><span style="display:flex;"><span> ]
|
|
</span></span><span style="display:flex;"><span>}
|
|
</span></span></code></pre></div><p>This gives you the full information about what values can be adjusted.</p>
|
|
<h2 id="updating-indexer-settings">Updating Indexer Settings<a class="td-heading-self-link" href="#updating-indexer-settings" aria-label="Heading self-link"></a></h2>
|
|
<p>You can update indexer settings by sending a <code>PATCH</code> request to
|
|
<code>/api/indexers/{indexer name}</code>. The name is <strong>case-sensitive</strong>. The body has to
|
|
be a JSON object with key-value pairs of the values you want to update.</p>
|
|
<p>Here is an example using cURL: as</p>
|
|
<div class="highlight"><pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X <span style="color:#98c379">'PATCH'</span> <span style="color:#d26464;font-weight:bold">\
|
|
</span></span></span><span style="display:flex;"><span><span style="color:#d26464;font-weight:bold"></span> <span style="color:#98c379">'https://abr.example.com/api/indexers/MyAnonamouse'</span> <span style="color:#d26464;font-weight:bold">\
|
|
</span></span></span><span style="display:flex;"><span><span style="color:#d26464;font-weight:bold"></span> -H <span style="color:#98c379">'accept: application/json'</span> <span style="color:#d26464;font-weight:bold">\
|
|
</span></span></span><span style="display:flex;"><span><span style="color:#d26464;font-weight:bold"></span> -H <span style="color:#98c379">'Authorization: Bearer MaEqMYAGY3qvXxtje6-YDxcs4damlyRaKzTC8itG2b8'</span> <span style="color:#d26464;font-weight:bold">\
|
|
</span></span></span><span style="display:flex;"><span><span style="color:#d26464;font-weight:bold"></span> -d <span style="color:#98c379">'{"mam_session_id":"bXDv1tC1d2MVvOypbFy8Q4Q-rz6q-bKwdqaSZzm85Dg"}'</span>
|
|
</span></span></code></pre></div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="td-content" style="page-break-before: always">
|
|
|
|
<h1 id="pg-70cac3f21ec9ace937ed903becc9f4ca">3 - OpenID Connect</h1>
|
|
<div class="lead">Setting up OIDC login</div>
|
|
<p>OIDC allows you to use the same login across multiple apps. This guide will show
|
|
you how to set up OIDC with Authentik, but the concepts are the same or similar
|
|
for other providers.</p>
|
|
<h2 id="setup-a-provider-on-authentik">Setup a provider on Authentik<a class="td-heading-self-link" href="#setup-a-provider-on-authentik" aria-label="Heading self-link"></a></h2>
|
|
<ol>
|
|
<li>
|
|
<p>You want to first create an application on Authentik. The settings here
|
|
don’t play a role for AudioBookRequest though.</p>
|
|
</li>
|
|
<li>
|
|
<p>You then want to create an OAuth2/OpenID Provider:</p>
|
|
<p><img src="/AudioBookRequest/docs/tutorials/oidc/authentik-oidc.png" alt="Authentik OIDC"></p>
|
|
</li>
|
|
<li>
|
|
<p>Configure the settings as preferred. The important two values are the
|
|
<code>Client ID</code> and <code>Client Secret</code>. Take note of those. You should also set the
|
|
redirect URL that the OIDC provider will redirect you to after a succesful
|
|
login. This has to be the domain of your ABR instance with <code>/auth/oidc</code>
|
|
appended.</p>
|
|
<p><img src="/AudioBookRequest/docs/tutorials/oidc/authentik-provider.png" alt="Authentik Provider"></p>
|
|
|
|
|
|
<div class="alert alert-warning" role="alert">
|
|
<h4 class="alert-heading">Warning</h4>
|
|
|
|
Make sure you correctly set
|
|
<code>http</code> or <code>https</code> in the redirect URL. This depends on how you access
|
|
AudioBookRequest.
|
|
|
|
</div>
|
|
|
|
</li>
|
|
<li>
|
|
<p>Set the scopes that ABR can get access to. You should always allow for the
|
|
<code>openid</code> scope. Any other scopes are optional. You’ll have to check with
|
|
your OIDC provider to see what what scopes are required to get a
|
|
name/username and groups. “Subject mode” is a unique identifier for the
|
|
user. This can be used as the username on ABR.</p>
|
|
<p><img src="/AudioBookRequest/docs/tutorials/oidc/authentik-scopes.png" alt="Authentik Scopes"></p>
|
|
</li>
|
|
<li>
|
|
<p>Assign your newly created provider to the ABR application.</p>
|
|
</li>
|
|
</ol>
|
|
<h2 id="setup-settings-in-abr">Setup settings in ABR<a class="td-heading-self-link" href="#setup-settings-in-abr" aria-label="Heading self-link"></a></h2>
|
|
<ol>
|
|
<li>On AudioBookRequest, head to <code>Settings>Security</code> and set the “Login Type” to
|
|
“OpenID Connect”.</li>
|
|
<li>Paste the “Client ID” and “Client Secret” into the respective fields.</li>
|
|
<li>Your “OIDC Configuration Endpoint” depends on the OIDC provider you use. For
|
|
Authentik, it’s usually along the lines of
|
|
<a href="https://domain.com/application/o/audiobookrequest/.well-known/openid-configuration">https://domain.com/application/o/audiobookrequest/.well-known/openid-configuration</a>.
|
|
You’ll have to find that for your own provider. Visiting the url should give
|
|
you a JSON-formatted object with different endpoints and details given.</li>
|
|
<li>The “OIDC Scopes” are the ones defined above separated by a space. <code>openid</code>
|
|
is always required. Any other scopes like <code>email</code> or <code>group</code> are only
|
|
required if you intend to use the email for the username or respectively
|
|
extract the group of the user.</li>
|
|
<li>“OIDC Username Claim” <strong>has to be a unique identifier</strong> which is used as the
|
|
username for the user. <code>sub</code> is always available, but you might prefere to
|
|
use <code>email</code> or <code>username</code> (with the correctly added scope).</li>
|
|
<li>Depending on what you used above for the redirect URL, set <code>http</code> or <code>https</code>.
|
|
|
|
|
|
<div class="alert alert-warning" role="alert">
|
|
<h4 class="alert-heading">Warning</h4>
|
|
|
|
<code>http/s</code> has to match-up with
|
|
what protocol your redirect-url uses. Providers <em>will</em> reject logins if this
|
|
does not match up.
|
|
|
|
</div>
|
|
</li>
|
|
<li><em>Optional</em>: The “OIDC Logout URL” is where you’re redirected if you select to
|
|
log out in ABR. OIDC Providers allow you to invalidate the session on this
|
|
URL. While this value is optional, not adding it might break logging out
|
|
slightly because the session can’t properly be invalidated.</li>
|
|
</ol>
|
|
<h2 id="groups">Groups<a class="td-heading-self-link" href="#groups" aria-label="Heading self-link"></a></h2>
|
|
<p>“OIDC Group Claim” is optional, but allows you to handle the role distribution
|
|
of users in your OIDC provider instead of in ABR. The exact claim that sends
|
|
along the information depends on your OIDC provider. The OIDC provider can
|
|
provide a single string or list of strings.</p>
|
|
<p>The groups have to be named exactly one of <code>untrusted</code>, <code>trusted</code>, or <code>admin</code>.
|
|
The letter case does not matter.</p>
|
|
|
|
|
|
<div class="alert alert-primary" role="alert">
|
|
|
|
|
|
For Authentik, the group claim name is <code>groups</code> and requires the
|
|
<code>profile</code> scope. If you assign a user to a group named <code>trusted</code>, that user will
|
|
receive the <code>Trusted</code> role once they login to AudioBookRequest.
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</main>
|
|
</div>
|
|
</div>
|
|
<footer class="td-footer row d-print-none">
|
|
<div class="container-fluid">
|
|
<div class="row mx-md-2">
|
|
<div class="td-footer__left col-6 col-sm-4 order-sm-1">
|
|
<ul class="td-footer__links-list">
|
|
|
|
<li class="td-footer__links-item" data-bs-toggle="tooltip" title="Discord" aria-label="Discord">
|
|
<a target="_blank" rel="noopener" href="https://discord.gg/SsFRXWMg7s" aria-label="Discord">
|
|
<i class="fab fa-discord"></i>
|
|
</a>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div><div class="td-footer__right col-6 col-sm-4 order-sm-3">
|
|
<ul class="td-footer__links-list">
|
|
|
|
<li class="td-footer__links-item" data-bs-toggle="tooltip" title="GitHub" aria-label="GitHub">
|
|
<a target="_blank" rel="noopener" href="https://github.com/google/docsy" aria-label="GitHub">
|
|
<i class="fab fa-github"></i>
|
|
</a>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div><div class="td-footer__center col-12 col-sm-4 py-2 order-sm-2">
|
|
<span class="td-footer__copyright">©
|
|
2025–2025
|
|
<span class="td-footer__authors">markbeep | <a href="https://creativecommons.org/licenses/by/4.0">CC BY 4.0</a> |</span></span><span class="td-footer__all_rights_reserved">All Rights Reserved</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<script src="/AudioBookRequest/js/main.js"></script>
|
|
<script defer src="/AudioBookRequest/js/click-to-copy.js" crossorigin="anonymous"></script>
|
|
<script src='/AudioBookRequest/js/tabpane-persist.js'></script>
|
|
|
|
</body>
|
|
</html>
|