1.0.0 release snapshot

This commit is contained in:
michael committed 2026-06-12 11:17:44 +02:00
1 parent 6115090da1
commit c9ad6b2f06
274 files changed
+138472 -1

No files matched your search

+60
View File
@@ -0,0 +1,60 @@
<!doctype html><html lang=de class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang"><meta name=author content=Michael><link href=https://mboehmlaender.github.io/ripster/api/converter/ rel=canonical><link href=../crons/ rel=prev><link href=../downloads/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.0"><title>Converter API - Ripster</title><link rel=stylesheet href=../../assets/stylesheets/main.618322db.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../stylesheets/extra.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#converter-api class=md-skip> Zum Inhalt </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Kopfzeile> <a href=../.. title=Ripster class="md-header__button md-logo" aria-label=Ripster data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 14a2 2 0 0 1-2-2c0-1.11.89-2 2-2s2 .89 2 2a2 2 0 0 1-2 2m0-10a8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8 8 8 0 0 0-8-8"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Ripster </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Converter API </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Dunkelmodus aktivieren" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Dunkelmodus aktivieren" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Hellmodus aktivieren" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Hellmodus aktivieren" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56Line truncated
</span><span id=__span-0-2><a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=w> </span><span class=nt>&quot;tree&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-0-3><a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-4><a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;filme&quot;</span><span class=p>,</span>
</span><span id=__span-0-5><a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=w> </span><span class=nt>&quot;relPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;filme&quot;</span><span class=p>,</span>
</span><span id=__span-0-6><a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=w> </span><span class=nt>&quot;isDir&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-0-7><a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=w> </span><span class=nt>&quot;children&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-0-8><a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-9><a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;film.mkv&quot;</span><span class=p>,</span>
</span><span id=__span-0-10><a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=w> </span><span class=nt>&quot;relPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;filme/film.mkv&quot;</span><span class=p>,</span>
</span><span id=__span-0-11><a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=w> </span><span class=nt>&quot;isDir&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-0-12><a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=w> </span><span class=nt>&quot;size&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>10485760</span>
</span><span id=__span-0-13><a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-14><a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-0-15><a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-16><a id=__codelineno-0-16 name=__codelineno-0-16 href=#__codelineno-0-16></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-0-17><a id=__codelineno-0-17 name=__codelineno-0-17 href=#__codelineno-0-17></a><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=get-apiconverterbrowseparentrelpath><code>GET /api/converter/browse?parent=relPath</code><a class=headerlink href=#get-apiconverterbrowseparentrelpath title="Permanent link">&para;</a></h3> <p>DB-basierter Datei-Explorer. Gibt Einträge für einen Unterordner zurück.</p> <p><strong>Query-Parameter:</strong></p> <table> <thead> <tr> <th>Parameter</th> <th>Typ</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>parent</code></td> <td>string</td> <td>Relativer Pfad zum Unterordner (leer = Root)</td> </tr> </tbody> </table> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span>
</span><span id=__span-1-2><a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=w> </span><span class=nt>&quot;entries&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-1-3><a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-1-4><a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-1-5><a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=w> </span><span class=nt>&quot;rel_path&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;filme/film.mkv&quot;</span><span class=p>,</span>
</span><span id=__span-1-6><a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a><span class=w> </span><span class=nt>&quot;is_dir&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-1-7><a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a><span class=w> </span><span class=nt>&quot;size&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>10485760</span><span class=p>,</span>
</span><span id=__span-1-8><a id=__codelineno-1-8 name=__codelineno-1-8 href=#__codelineno-1-8></a><span class=w> </span><span class=nt>&quot;job_id&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-1-9><a id=__codelineno-1-9 name=__codelineno-1-9 href=#__codelineno-1-9></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-1-10><a id=__codelineno-1-10 name=__codelineno-1-10 href=#__codelineno-1-10></a><span class=w> </span><span class=p>],</span>
</span><span id=__span-1-11><a id=__codelineno-1-11 name=__codelineno-1-11 href=#__codelineno-1-11></a><span class=w> </span><span class=nt>&quot;rawDir&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/data/output/converter-raw&quot;</span>
</span><span id=__span-1-12><a id=__codelineno-1-12 name=__codelineno-1-12 href=#__codelineno-1-12></a><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiconverterscan><code>POST /api/converter/scan</code><a class=headerlink href=#post-apiconverterscan title="Permanent link">&para;</a></h3> <p>Manuellen Scan des <code>converter_raw_dir</code> auslösen. Aktualisiert <code>converter_scan_entries</code> in der DB.</p> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;added&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;removed&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=jobs-erstellen>Jobs erstellen<a class=headerlink href=#jobs-erstellen title="Permanent link">&para;</a></h2> <h3 id=post-apiconverterjobsfrom-selection><code>POST /api/converter/jobs/from-selection</code><a class=headerlink href=#post-apiconverterjobsfrom-selection title="Permanent link">&para;</a></h3> <p>Jobs aus im Datei-Explorer ausgewählten Dateien erstellen.</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=p>{</span>
</span><span id=__span-3-2><a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a><span class=w> </span><span class=nt>&quot;relPaths&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;filme/film.mkv&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;musik/track.flac&quot;</span><span class=p>],</span>
</span><span id=__span-3-3><a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a><span class=w> </span><span class=nt>&quot;audioMode&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;individual&quot;</span>
</span><span id=__span-3-4><a id=__codelineno-3-4 name=__codelineno-3-4 href=#__codelineno-3-4></a><span class=p>}</span>
</span></code></pre></div> <table> <thead> <tr> <th>Feld</th> <th>Typ</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>relPaths</code></td> <td>string[]</td> <td>Relative Pfade der ausgewählten Dateien</td> </tr> <tr> <td><code>audioMode</code></td> <td>string</td> <td><code>individual</code> (ein Job pro Datei) oder <code>shared</code> (ein gemeinsamer Job)</td> </tr> </tbody> </table> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;jobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;READY_TO_START&quot;</span><span class=w> </span><span class=p>}]</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiconvertercreate-jobs><code>POST /api/converter/create-jobs</code><a class=headerlink href=#post-apiconvertercreate-jobs title="Permanent link">&para;</a></h3> <p>Jobs aus DB-Scan-Einträgen erstellen.</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=p>{</span>
</span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=w> </span><span class=nt>&quot;entries&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-5-3><a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;relPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;filme/film.mkv&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;converterMediaType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;video&quot;</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-5-4><a id=__codelineno-5-4 name=__codelineno-5-4 href=#__codelineno-5-4></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-5-5><a id=__codelineno-5-5 name=__codelineno-5-5 href=#__codelineno-5-5></a><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiconverterupload><code>POST /api/converter/upload</code><a class=headerlink href=#post-apiconverterupload title="Permanent link">&para;</a></h3> <p>Dateien hochladen (Multipart, max. 50 Dateien).</p> <p><strong>Form-Felder:</strong></p> <table> <thead> <tr> <th>Feld</th> <th>Typ</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>files</code></td> <td>File[]</td> <td>Hochzuladende Dateien</td> </tr> <tr> <td><code>folderName</code></td> <td>string</td> <td>(Optional) Ziel-Unterordner</td> </tr> </tbody> </table> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a><span class=p>{</span>
</span><span id=__span-6-2><a id=__codelineno-6-2 name=__codelineno-6-2 href=#__codelineno-6-2></a><span class=w> </span><span class=nt>&quot;folders&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[{</span><span class=w> </span><span class=nt>&quot;folderRelPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;upload-2026-03-30&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;fileCount&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=w> </span><span class=p>}]</span>
</span><span id=__span-6-3><a id=__codelineno-6-3 name=__codelineno-6-3 href=#__codelineno-6-3></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=job-verwaltung>Job-Verwaltung<a class=headerlink href=#job-verwaltung title="Permanent link">&para;</a></h2> <h3 id=get-apiconverterjobs><code>GET /api/converter/jobs</code><a class=headerlink href=#get-apiconverterjobs title="Permanent link">&para;</a></h3> <p>Alle Converter-Jobs zurückgeben.</p> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;jobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;READY_TO_START&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;film.mkv&quot;</span><span class=w> </span><span class=p>}]</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=get-apiconverterjobsjobid><code>GET /api/converter/jobs/:jobId</code><a class=headerlink href=#get-apiconverterjobsjobid title="Permanent link">&para;</a></h3> <p>Einzelnen Converter-Job abrufen.</p> <hr> <h3 id=post-apiconverterjobsjobidconfig><code>POST /api/converter/jobs/:jobId/config</code><a class=headerlink href=#post-apiconverterjobsjobidconfig title="Permanent link">&para;</a></h3> <p>Konfigurationsentwurf für einen Job speichern (persistiert in <code>encode_plan_json</code>).</p> <p><strong>Body:</strong> Partielles Konfig-Objekt (Ausgabeformat, Presets, Metadaten, Track-Auswahl).</p> <hr> <h3 id=post-apiconverterjobsjobidassign-files><code>POST /api/converter/jobs/:jobId/assign-files</code><a class=headerlink href=#post-apiconverterjobsjobidassign-files title="Permanent link">&para;</a></h3> <p>Dateien einem bestehenden (noch nicht gestarteten) Job hinzufügen.</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;relPaths&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;musik/track2.flac&quot;</span><span class=p>]</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiconverterjobsjobidremove-file><code>POST /api/converter/jobs/:jobId/remove-file</code><a class=headerlink href=#post-apiconverterjobsjobidremove-file title="Permanent link">&para;</a></h3> <p>Datei aus einem Job entfernen (per relativer Pfad).</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-9-1><a id=__codelineno-9-1 name=__codelineno-9-1 href=#__codelineno-9-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;relPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;musik/track2.flac&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiconverterjobsjobidremove-input><code>POST /api/converter/jobs/:jobId/remove-input</code><a class=headerlink href=#post-apiconverterjobsjobidremove-input title="Permanent link">&para;</a></h3> <p>Datei aus einem Job entfernen (per absolutem Eingabepfad).</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-10-1><a id=__codelineno-10-1 name=__codelineno-10-1 href=#__codelineno-10-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;inputPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/data/output/converter-raw/musik/track2.flac&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiconverterjobsjobidstart><code>POST /api/converter/jobs/:jobId/start</code><a class=headerlink href=#post-apiconverterjobsjobidstart title="Permanent link">&para;</a></h3> <p>Job mit finaler Konfiguration starten.</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-11-1><a id=__codelineno-11-1 name=__codelineno-11-1 href=#__codelineno-11-1></a><span class=p>{</span>
</span><span id=__span-11-2><a id=__codelineno-11-2 name=__codelineno-11-2 href=#__codelineno-11-2></a><span class=w> </span><span class=nt>&quot;converterMediaType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;video&quot;</span><span class=p>,</span>
</span><span id=__span-11-3><a id=__codelineno-11-3 name=__codelineno-11-3 href=#__codelineno-11-3></a><span class=w> </span><span class=nt>&quot;outputFormat&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;mkv&quot;</span><span class=p>,</span>
</span><span id=__span-11-4><a id=__codelineno-11-4 name=__codelineno-11-4 href=#__codelineno-11-4></a><span class=w> </span><span class=nt>&quot;userPreset&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;H.264 MKV 1080p30&quot;</span><span class=p>,</span>
</span><span id=__span-11-5><a id=__codelineno-11-5 name=__codelineno-11-5 href=#__codelineno-11-5></a><span class=w> </span><span class=nt>&quot;trackSelection&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-11-6><a id=__codelineno-11-6 name=__codelineno-11-6 href=#__codelineno-11-6></a><span class=w> </span><span class=nt>&quot;handBrakeTitleId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-11-7><a id=__codelineno-11-7 name=__codelineno-11-7 href=#__codelineno-11-7></a><span class=w> </span><span class=nt>&quot;audioFormatOptions&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{}</span>
</span><span id=__span-11-8><a id=__codelineno-11-8 name=__codelineno-11-8 href=#__codelineno-11-8></a><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiconverterjobsjobidcancel><code>POST /api/converter/jobs/:jobId/cancel</code><a class=headerlink href=#post-apiconverterjobsjobidcancel title="Permanent link">&para;</a></h3> <p>Laufenden Job abbrechen.</p> <hr> <h3 id=delete-apiconverterjobsjobid><code>DELETE /api/converter/jobs/:jobId</code><a class=headerlink href=#delete-apiconverterjobsjobid title="Permanent link">&para;</a></h3> <p>Job aus der DB löschen.</p> <hr> <h2 id=datei-operationen>Datei-Operationen<a class=headerlink href=#datei-operationen title="Permanent link">&para;</a></h2> <p>Alle Datei-Operationen arbeiten direkt auf dem Dateisystem (ohne DB-Aktualisierung). Ein anschließender Scan-Aufruf synchronisiert die DB.</p> <h3 id=delete-apiconverterfiles><code>DELETE /api/converter/files</code><a class=headerlink href=#delete-apiconverterfiles title="Permanent link">&para;</a></h3> <p>Datei oder Ordner löschen.</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-12-1><a id=__codelineno-12-1 name=__codelineno-12-1 href=#__codelineno-12-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;relPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;filme/film.mkv&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiconverterfilesrename><code>POST /api/converter/files/rename</code><a class=headerlink href=#post-apiconverterfilesrename title="Permanent link">&para;</a></h3> <p>Datei oder Ordner umbenennen.</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-13-1><a id=__codelineno-13-1 name=__codelineno-13-1 href=#__codelineno-13-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;relPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;filme/film.mkv&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;newName&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;film-neu.mkv&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiconverterfilesmove><code>POST /api/converter/files/move</code><a class=headerlink href=#post-apiconverterfilesmove title="Permanent link">&para;</a></h3> <p>Datei oder Ordner verschieben.</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-14-1><a id=__codelineno-14-1 name=__codelineno-14-1 href=#__codelineno-14-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;relPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;filme/film.mkv&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;targetParentRelPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;archiv&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p><code>targetParentRelPath = ""</code> verschiebt in das Root-Verzeichnis.</p> <hr> <h3 id=post-apiconverterfilesfolder><code>POST /api/converter/files/folder</code><a class=headerlink href=#post-apiconverterfilesfolder title="Permanent link">&para;</a></h3> <p>Neuen Ordner anlegen.</p> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-15-1><a id=__codelineno-15-1 name=__codelineno-15-1 href=#__codelineno-15-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;parentRelPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;filme&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;neu&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Zurück zum Seitenanfang </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/YOUR_GITHUB_USERNAME/ripster target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy", "content.code.annotate", "content.tabs.link", "toc.integrate"], "search": "../../assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}, "version": {"provider": "mike"}}</script> <script src=../../assets/javascripts/bundle.e71a0d61.min.js></script> </body> </html>
+56
View File
@@ -0,0 +1,56 @@
<!doctype html><html lang=de class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang"><meta name=author content=Michael><link href=https://mboehmlaender.github.io/ripster/api/crons/ rel=canonical><link href=../history/ rel=prev><link href=../converter/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.0"><title>Cron API - Ripster</title><link rel=stylesheet href=../../assets/stylesheets/main.618322db.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../stylesheets/extra.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#cron-api class=md-skip> Zum Inhalt </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Kopfzeile> <a href=../.. title=Ripster class="md-header__button md-logo" aria-label=Ripster data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 14a2 2 0 0 1-2-2c0-1.11.89-2 2-2s2 .89 2 2a2 2 0 0 1-2 2m0-10a8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8 8 8 0 0 0-8-8"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Ripster </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Cron API </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Dunkelmodus aktivieren" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Dunkelmodus aktivieren" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Hellmodus aktivieren" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Hellmodus aktivieren" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79lLine truncated
</span><span id=__span-0-2><a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=w> </span><span class=nt>&quot;jobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-0-3><a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-4><a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-0-5><a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Nachtlauf Backup&quot;</span><span class=p>,</span>
</span><span id=__span-0-6><a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=w> </span><span class=nt>&quot;cronExpression&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;0 2 * * *&quot;</span><span class=p>,</span>
</span><span id=__span-0-7><a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=w> </span><span class=nt>&quot;sourceType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;script&quot;</span><span class=p>,</span>
</span><span id=__span-0-8><a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=w> </span><span class=nt>&quot;sourceId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-0-9><a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=w> </span><span class=nt>&quot;sourceName&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Backup-Skript&quot;</span><span class=p>,</span>
</span><span id=__span-0-10><a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=w> </span><span class=nt>&quot;enabled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-0-11><a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=w> </span><span class=nt>&quot;pushoverEnabled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-0-12><a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=w> </span><span class=nt>&quot;lastRunAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T02:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-0-13><a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a><span class=w> </span><span class=nt>&quot;lastRunStatus&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;success&quot;</span><span class=p>,</span>
</span><span id=__span-0-14><a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a><span class=w> </span><span class=nt>&quot;nextRunAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-11T02:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-0-15><a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a><span class=w> </span><span class=nt>&quot;createdAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-01T10:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-0-16><a id=__codelineno-0-16 name=__codelineno-0-16 href=#__codelineno-0-16></a><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T02:00:05.000Z&quot;</span>
</span><span id=__span-0-17><a id=__codelineno-0-17 name=__codelineno-0-17 href=#__codelineno-0-17></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-18><a id=__codelineno-0-18 name=__codelineno-0-18 href=#__codelineno-0-18></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-0-19><a id=__codelineno-0-19 name=__codelineno-0-19 href=#__codelineno-0-19></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apicrons>POST /api/crons<a class=headerlink href=#post-apicrons title="Permanent link">&para;</a></h2> <p>Erstellt Cron-Job.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span>
</span><span id=__span-1-2><a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Nachtlauf Backup&quot;</span><span class=p>,</span>
</span><span id=__span-1-3><a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=w> </span><span class=nt>&quot;cronExpression&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;0 2 * * *&quot;</span><span class=p>,</span>
</span><span id=__span-1-4><a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=w> </span><span class=nt>&quot;sourceType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;script&quot;</span><span class=p>,</span>
</span><span id=__span-1-5><a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=w> </span><span class=nt>&quot;sourceId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-1-6><a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a><span class=w> </span><span class=nt>&quot;enabled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-1-7><a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a><span class=w> </span><span class=nt>&quot;pushoverEnabled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
</span><span id=__span-1-8><a id=__codelineno-1-8 name=__codelineno-1-8 href=#__codelineno-1-8></a><span class=p>}</span>
</span></code></pre></div> <p>Response: <code>201</code> mit <code>{ "job": { ... } }</code></p> <hr> <h2 id=get-apicronsid>GET /api/crons/:id<a class=headerlink href=#get-apicronsid title="Permanent link">&para;</a></h2> <p>Response:</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;job&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=put-apicronsid>PUT /api/crons/:id<a class=headerlink href=#put-apicronsid title="Permanent link">&para;</a></h2> <p>Aktualisiert Cron-Job. Felder wie bei <code>POST</code>.</p> <p>Response:</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;job&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=err>...</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=delete-apicronsid>DELETE /api/crons/:id<a class=headerlink href=#delete-apicronsid title="Permanent link">&para;</a></h2> <p>Response:</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;removed&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Nachtlauf Backup&quot;</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=get-apicronsidlogs>GET /api/crons/:id/logs<a class=headerlink href=#get-apicronsidlogs title="Permanent link">&para;</a></h2> <p>Liefert Ausführungs-Logs.</p> <p><strong>Query-Parameter:</strong></p> <table> <thead> <tr> <th>Parameter</th> <th>Typ</th> <th>Default</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>limit</code></td> <td>number</td> <td><code>20</code></td> <td>Anzahl Einträge, max. <code>100</code></td> </tr> </tbody> </table> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=p>{</span>
</span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=w> </span><span class=nt>&quot;logs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-5-3><a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-5-4><a id=__codelineno-5-4 name=__codelineno-5-4 href=#__codelineno-5-4></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-5-5><a id=__codelineno-5-5 name=__codelineno-5-5 href=#__codelineno-5-5></a><span class=w> </span><span class=nt>&quot;cronJobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-5-6><a id=__codelineno-5-6 name=__codelineno-5-6 href=#__codelineno-5-6></a><span class=w> </span><span class=nt>&quot;startedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T02:00:01.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-5-7><a id=__codelineno-5-7 name=__codelineno-5-7 href=#__codelineno-5-7></a><span class=w> </span><span class=nt>&quot;finishedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T02:00:05.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-5-8><a id=__codelineno-5-8 name=__codelineno-5-8 href=#__codelineno-5-8></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;success&quot;</span><span class=p>,</span>
</span><span id=__span-5-9><a id=__codelineno-5-9 name=__codelineno-5-9 href=#__codelineno-5-9></a><span class=w> </span><span class=nt>&quot;output&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Backup abgeschlossen.&quot;</span><span class=p>,</span>
</span><span id=__span-5-10><a id=__codelineno-5-10 name=__codelineno-5-10 href=#__codelineno-5-10></a><span class=w> </span><span class=nt>&quot;errorMessage&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-5-11><a id=__codelineno-5-11 name=__codelineno-5-11 href=#__codelineno-5-11></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-5-12><a id=__codelineno-5-12 name=__codelineno-5-12 href=#__codelineno-5-12></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-5-13><a id=__codelineno-5-13 name=__codelineno-5-13 href=#__codelineno-5-13></a><span class=p>}</span>
</span></code></pre></div> <p><code>status</code>: <code>running</code> | <code>success</code> | <code>error</code></p> <hr> <h2 id=post-apicronsidrun>POST /api/crons/:id/run<a class=headerlink href=#post-apicronsidrun title="Permanent link">&para;</a></h2> <p>Triggert Job manuell (asynchron).</p> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;triggered&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;cronJobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p>Wenn Job bereits läuft: <code>409</code>.</p> <hr> <h2 id=post-apicronsvalidate-expression>POST /api/crons/validate-expression<a class=headerlink href=#post-apicronsvalidate-expression title="Permanent link">&para;</a></h2> <p>Validiert 5-Felder-Cron-Ausdruck und berechnet nächsten Lauf.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;cronExpression&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;*/15 * * * *&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p><strong>Gültige Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a><span class=p>{</span>
</span><span id=__span-8-2><a id=__codelineno-8-2 name=__codelineno-8-2 href=#__codelineno-8-2></a><span class=w> </span><span class=nt>&quot;valid&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-8-3><a id=__codelineno-8-3 name=__codelineno-8-3 href=#__codelineno-8-3></a><span class=w> </span><span class=nt>&quot;nextRunAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T14:15:00.000Z&quot;</span>
</span><span id=__span-8-4><a id=__codelineno-8-4 name=__codelineno-8-4 href=#__codelineno-8-4></a><span class=p>}</span>
</span></code></pre></div> <p><strong>Ungültige Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-9-1><a id=__codelineno-9-1 name=__codelineno-9-1 href=#__codelineno-9-1></a><span class=p>{</span>
</span><span id=__span-9-2><a id=__codelineno-9-2 name=__codelineno-9-2 href=#__codelineno-9-2></a><span class=w> </span><span class=nt>&quot;valid&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-9-3><a id=__codelineno-9-3 name=__codelineno-9-3 href=#__codelineno-9-3></a><span class=w> </span><span class=nt>&quot;error&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Cron-Ausdruck muss genau 5 Felder haben (Minute Stunde Tag Monat Wochentag).&quot;</span><span class=p>,</span>
</span><span id=__span-9-4><a id=__codelineno-9-4 name=__codelineno-9-4 href=#__codelineno-9-4></a><span class=w> </span><span class=nt>&quot;nextRunAt&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-9-5><a id=__codelineno-9-5 name=__codelineno-9-5 href=#__codelineno-9-5></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=cron-format>Cron-Format<a class=headerlink href=#cron-format title="Permanent link">&para;</a></h2> <p>Ripster unterstützt 5 Felder:</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-10-1><a id=__codelineno-10-1 name=__codelineno-10-1 href=#__codelineno-10-1></a>Minute Stunde Tag Monat Wochentag
</span></code></pre></div> <p>Beispiele:</p> <ul> <li><code>0 2 * * *</code> täglich 02:00</li> <li><code>*/15 * * * *</code> alle 15 Minuten</li> <li><code>0 6 * * 1-5</code> Mo-Fr 06:00</li> </ul> <hr> <h2 id=websocket-events-zu-cron>WebSocket-Events zu Cron<a class=headerlink href=#websocket-events-zu-cron title="Permanent link">&para;</a></h2> <ul> <li><code>CRON_JOBS_UPDATED</code> bei Create/Update/Delete</li> <li><code>CRON_JOB_UPDATED</code> bei Laufzeitstatus (<code>running</code> -&gt; <code>success|error</code>)</li> </ul> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Zurück zum Seitenanfang </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/YOUR_GITHUB_USERNAME/ripster target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy", "content.code.annotate", "content.tabs.link", "toc.integrate"], "search": "../../assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}, "version": {"provider": "mike"}}</script> <script src=../../assets/javascripts/bundle.e71a0d61.min.js></script> </body> </html>
+46
View File
@@ -0,0 +1,46 @@
<!doctype html><html lang=de class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang"><meta name=author content=Michael><link href=https://mboehmlaender.github.io/ripster/api/downloads/ rel=canonical><link href=../converter/ rel=prev><link href=../runtime-activities/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.0"><title>Downloads API - Ripster</title><link rel=stylesheet href=../../assets/stylesheets/main.618322db.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../stylesheets/extra.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#downloads-api class=md-skip> Zum Inhalt </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Kopfzeile> <a href=../.. title=Ripster class="md-header__button md-logo" aria-label=Ripster data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 14a2 2 0 0 1-2-2c0-1.11.89-2 2-2s2 .89 2 2a2 2 0 0 1-2 2m0-10a8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8 8 8 0 0 0-8-8"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Ripster </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Downloads API </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Dunkelmodus aktivieren" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Dunkelmodus aktivieren" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Hellmodus aktivieren" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Hellmodus aktivieren" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-Line truncated
</span><span id=__span-0-2><a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=w> </span><span class=nt>&quot;items&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-0-3><a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-4><a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;dl-42-raw&quot;</span><span class=p>,</span>
</span><span id=__span-0-5><a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-0-6><a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=w> </span><span class=nt>&quot;target&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;raw&quot;</span><span class=p>,</span>
</span><span id=__span-0-7><a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ready&quot;</span><span class=p>,</span>
</span><span id=__span-0-8><a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=w> </span><span class=nt>&quot;archiveName&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Job_42_raw.zip&quot;</span><span class=p>,</span>
</span><span id=__span-0-9><a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=w> </span><span class=nt>&quot;outputPath&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-10><a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=w> </span><span class=nt>&quot;createdAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-30T10:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-0-11><a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-30T10:01:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-0-12><a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=w> </span><span class=nt>&quot;errorMessage&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-0-13><a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-14><a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a><span class=w> </span><span class=p>],</span>
</span><span id=__span-0-15><a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a><span class=w> </span><span class=nt>&quot;summary&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-16><a id=__codelineno-0-16 name=__codelineno-0-16 href=#__codelineno-0-16></a><span class=w> </span><span class=nt>&quot;total&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-0-17><a id=__codelineno-0-17 name=__codelineno-0-17 href=#__codelineno-0-17></a><span class=w> </span><span class=nt>&quot;pending&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-0-18><a id=__codelineno-0-18 name=__codelineno-0-18 href=#__codelineno-0-18></a><span class=w> </span><span class=nt>&quot;processing&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span>
</span><span id=__span-0-19><a id=__codelineno-0-19 name=__codelineno-0-19 href=#__codelineno-0-19></a><span class=w> </span><span class=nt>&quot;ready&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-0-20><a id=__codelineno-0-20 name=__codelineno-0-20 href=#__codelineno-0-20></a><span class=w> </span><span class=nt>&quot;failed&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span>
</span><span id=__span-0-21><a id=__codelineno-0-21 name=__codelineno-0-21 href=#__codelineno-0-21></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-22><a id=__codelineno-0-22 name=__codelineno-0-22 href=#__codelineno-0-22></a><span class=p>}</span>
</span></code></pre></div> <p><strong>Status-Werte:</strong></p> <table> <thead> <tr> <th>Status</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>pending</code></td> <td>In der Queue, noch nicht gestartet</td> </tr> <tr> <td><code>processing</code></td> <td>ZIP wird gerade erstellt</td> </tr> <tr> <td><code>ready</code></td> <td>ZIP fertig, Download verfügbar</td> </tr> <tr> <td><code>failed</code></td> <td>Fehler bei der Erstellung</td> </tr> </tbody> </table> <hr> <h2 id=get-apidownloadssummary><code>GET /api/downloads/summary</code><a class=headerlink href=#get-apidownloadssummary title="Permanent link">&para;</a></h2> <p>Nur die Zusammenfassung der Download-Queue (ohne Item-Liste).</p> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span>
</span><span id=__span-1-2><a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=w> </span><span class=nt>&quot;summary&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-1-3><a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=w> </span><span class=nt>&quot;total&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-1-4><a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=w> </span><span class=nt>&quot;pending&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-1-5><a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=w> </span><span class=nt>&quot;processing&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span>
</span><span id=__span-1-6><a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a><span class=w> </span><span class=nt>&quot;ready&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-1-7><a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a><span class=w> </span><span class=nt>&quot;failed&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span>
</span><span id=__span-1-8><a id=__codelineno-1-8 name=__codelineno-1-8 href=#__codelineno-1-8></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-1-9><a id=__codelineno-1-9 name=__codelineno-1-9 href=#__codelineno-1-9></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apidownloadshistoryjobid><code>POST /api/downloads/history/:jobId</code><a class=headerlink href=#post-apidownloadshistoryjobid title="Permanent link">&para;</a></h2> <p>Job-Ausgabe in die Download-Queue einreihen.</p> <p><strong>Parameter:</strong></p> <table> <thead> <tr> <th>Parameter</th> <th>Typ</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>jobId</code></td> <td>number</td> <td>ID des Jobs in der Historie</td> </tr> </tbody> </table> <p><strong>Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span>
</span><span id=__span-2-2><a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a><span class=w> </span><span class=nt>&quot;target&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;raw&quot;</span><span class=p>,</span>
</span><span id=__span-2-3><a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=w> </span><span class=nt>&quot;outputPath&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-2-4><a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a><span class=p>}</span>
</span></code></pre></div> <table> <thead> <tr> <th>Feld</th> <th>Typ</th> <th>Default</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>target</code></td> <td>string</td> <td><code>raw</code></td> <td><code>raw</code> (RAW-Dateien) oder <code>movie</code> (Ausgabedateien)</td> </tr> <tr> <td><code>outputPath</code></td> <td>string</td> <td><code>null</code></td> <td>Optionaler expliziter Ausgabepfad</td> </tr> </tbody> </table> <p><strong>Response (201 Created):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=p>{</span>
</span><span id=__span-3-2><a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a><span class=w> </span><span class=nt>&quot;created&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-3-3><a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;dl-42-raw&quot;</span><span class=p>,</span>
</span><span id=__span-3-4><a id=__codelineno-3-4 name=__codelineno-3-4 href=#__codelineno-3-4></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;pending&quot;</span><span class=p>,</span>
</span><span id=__span-3-5><a id=__codelineno-3-5 name=__codelineno-3-5 href=#__codelineno-3-5></a><span class=w> </span><span class=nt>&quot;summary&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;total&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;pending&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;processing&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;ready&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;failed&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-3-6><a id=__codelineno-3-6 name=__codelineno-3-6 href=#__codelineno-3-6></a><span class=p>}</span>
</span></code></pre></div> <p>Ist der Eintrag bereits vorhanden, wird <code>201</code> durch <code>200</code> ersetzt und <code>created: false</code> zurückgegeben.</p> <hr> <h2 id=get-apidownloadsidfile><code>GET /api/downloads/:id/file</code><a class=headerlink href=#get-apidownloadsidfile title="Permanent link">&para;</a></h2> <p>Fertige ZIP-Datei herunterladen.</p> <p><strong>Parameter:</strong></p> <table> <thead> <tr> <th>Parameter</th> <th>Typ</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>id</code></td> <td>string</td> <td>Download-ID (z. B. <code>dl-42-raw</code>)</td> </tr> </tbody> </table> <p><strong>Response:</strong> Datei-Download (<code>Content-Disposition: attachment</code>).</p> <p>Schlägt fehl mit <code>404</code>, wenn kein Download-Eintrag mit dieser ID existiert oder die Datei noch nicht bereit ist.</p> <hr> <h2 id=delete-apidownloadsid><code>DELETE /api/downloads/:id</code><a class=headerlink href=#delete-apidownloadsid title="Permanent link">&para;</a></h2> <p>Download-Eintrag löschen (auch fertige ZIP-Dateien werden vom Dateisystem entfernt).</p> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=p>{</span>
</span><span id=__span-4-2><a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a><span class=w> </span><span class=nt>&quot;ok&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-4-3><a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a><span class=w> </span><span class=nt>&quot;summary&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;total&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;pending&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;processing&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;ready&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;failed&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-4-4><a id=__codelineno-4-4 name=__codelineno-4-4 href=#__codelineno-4-4></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=websocket>WebSocket<a class=headerlink href=#websocket title="Permanent link">&para;</a></h2> <p>Statusänderungen werden über <code>DOWNLOADS_UPDATED</code> in Echtzeit gemeldet. Vollständige Dokumentation: <a href=../websocket/#downloads_updated>WebSocket Events</a>.</p> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Zurück zum Seitenanfang </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/YOUR_GITHUB_USERNAME/ripster target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy", "content.code.annotate", "content.tabs.link", "toc.integrate"], "search": "../../assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}, "version": {"provider": "mike"}}</script> <script src=../../assets/javascripts/bundle.e71a0d61.min.js></script> </body> </html>
+87
View File
@@ -0,0 +1,87 @@
<!doctype html><html lang=de class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang"><meta name=author content=Michael><link href=https://mboehmlaender.github.io/ripster/api/history/ rel=canonical><link href=../settings/ rel=prev><link href=../crons/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.0"><title>History API - Ripster</title><link rel=stylesheet href=../../assets/stylesheets/main.618322db.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../stylesheets/extra.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#history-api class=md-skip> Zum Inhalt </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Kopfzeile> <a href=../.. title=Ripster class="md-header__button md-logo" aria-label=Ripster data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 14a2 2 0 0 1-2-2c0-1.11.89-2 2-2s2 .89 2 2a2 2 0 0 1-2 2m0-10a8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8 8 8 0 0 0-8-8"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Ripster </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> History API </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Dunkelmodus aktivieren" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Dunkelmodus aktivieren" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Hellmodus aktivieren" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Hellmodus aktivieren" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27Line truncated
</span></code></pre></div> <p><strong>Response (Beispiel):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span>
</span><span id=__span-1-2><a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=w> </span><span class=nt>&quot;jobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-1-3><a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-1-4><a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-1-5><a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;FINISHED&quot;</span><span class=p>,</span>
</span><span id=__span-1-6><a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Inception&quot;</span><span class=p>,</span>
</span><span id=__span-1-7><a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a><span class=w> </span><span class=nt>&quot;job_kind&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;bluray&quot;</span><span class=p>,</span>
</span><span id=__span-1-8><a id=__codelineno-1-8 name=__codelineno-1-8 href=#__codelineno-1-8></a><span class=w> </span><span class=nt>&quot;raw_path&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/raw/Inception - RAW - job-42&quot;</span><span class=p>,</span>
</span><span id=__span-1-9><a id=__codelineno-1-9 name=__codelineno-1-9 href=#__codelineno-1-9></a><span class=w> </span><span class=nt>&quot;output_path&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/movies/Inception (2010)/Inception (2010).mkv&quot;</span><span class=p>,</span>
</span><span id=__span-1-10><a id=__codelineno-1-10 name=__codelineno-1-10 href=#__codelineno-1-10></a><span class=w> </span><span class=nt>&quot;mediaType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;bluray&quot;</span><span class=p>,</span>
</span><span id=__span-1-11><a id=__codelineno-1-11 name=__codelineno-1-11 href=#__codelineno-1-11></a><span class=w> </span><span class=nt>&quot;ripSuccessful&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-1-12><a id=__codelineno-1-12 name=__codelineno-1-12 href=#__codelineno-1-12></a><span class=w> </span><span class=nt>&quot;encodeSuccess&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-1-13><a id=__codelineno-1-13 name=__codelineno-1-13 href=#__codelineno-1-13></a><span class=w> </span><span class=nt>&quot;created_at&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T08:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-1-14><a id=__codelineno-1-14 name=__codelineno-1-14 href=#__codelineno-1-14></a><span class=w> </span><span class=nt>&quot;updated_at&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T10:00:00.000Z&quot;</span>
</span><span id=__span-1-15><a id=__codelineno-1-15 name=__codelineno-1-15 href=#__codelineno-1-15></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-1-16><a id=__codelineno-1-16 name=__codelineno-1-16 href=#__codelineno-1-16></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-1-17><a id=__codelineno-1-17 name=__codelineno-1-17 href=#__codelineno-1-17></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=get-apihistoryid>GET /api/history/:id<a class=headerlink href=#get-apihistoryid title="Permanent link">&para;</a></h2> <p>Liefert Job-Detail.</p> <p><strong>Query-Parameter:</strong></p> <table> <thead> <tr> <th>Parameter</th> <th>Typ</th> <th>Standard</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>includeLogs</code></td> <td>bool</td> <td><code>false</code></td> <td>Prozesslog laden.</td> </tr> <tr> <td><code>includeLiveLog</code></td> <td>bool</td> <td><code>false</code></td> <td>Live-/Tail-Log laden.</td> </tr> <tr> <td><code>includeAllLogs</code></td> <td>bool</td> <td><code>false</code></td> <td>vollständiges Log statt Tail.</td> </tr> <tr> <td><code>logTailLines</code></td> <td>number</td> <td><code>800</code></td> <td>Tail-Länge falls nicht <code>includeAllLogs</code>.</td> </tr> <tr> <td><code>lite</code></td> <td>bool</td> <td><code>false</code></td> <td>Detailantwort ohne FS-Checks.</td> </tr> </tbody> </table> <p><strong>Response (Beispiel):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span>
</span><span id=__span-2-2><a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a><span class=w> </span><span class=nt>&quot;job&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-2-3><a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-2-4><a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;FINISHED&quot;</span><span class=p>,</span>
</span><span id=__span-2-5><a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a><span class=w> </span><span class=nt>&quot;makemkvInfo&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-2-6><a id=__codelineno-2-6 name=__codelineno-2-6 href=#__codelineno-2-6></a><span class=w> </span><span class=nt>&quot;mediainfoInfo&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-2-7><a id=__codelineno-2-7 name=__codelineno-2-7 href=#__codelineno-2-7></a><span class=w> </span><span class=nt>&quot;handbrakeInfo&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-2-8><a id=__codelineno-2-8 name=__codelineno-2-8 href=#__codelineno-2-8></a><span class=w> </span><span class=nt>&quot;encodePlan&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-2-9><a id=__codelineno-2-9 name=__codelineno-2-9 href=#__codelineno-2-9></a><span class=w> </span><span class=nt>&quot;log&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=p>,</span>
</span><span id=__span-2-10><a id=__codelineno-2-10 name=__codelineno-2-10 href=#__codelineno-2-10></a><span class=w> </span><span class=nt>&quot;log_count&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-2-11><a id=__codelineno-2-11 name=__codelineno-2-11 href=#__codelineno-2-11></a><span class=w> </span><span class=nt>&quot;logMeta&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-2-12><a id=__codelineno-2-12 name=__codelineno-2-12 href=#__codelineno-2-12></a><span class=w> </span><span class=nt>&quot;loaded&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-2-13><a id=__codelineno-2-13 name=__codelineno-2-13 href=#__codelineno-2-13></a><span class=w> </span><span class=nt>&quot;total&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>800</span><span class=p>,</span>
</span><span id=__span-2-14><a id=__codelineno-2-14 name=__codelineno-2-14 href=#__codelineno-2-14></a><span class=w> </span><span class=nt>&quot;returned&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>800</span><span class=p>,</span>
</span><span id=__span-2-15><a id=__codelineno-2-15 name=__codelineno-2-15 href=#__codelineno-2-15></a><span class=w> </span><span class=nt>&quot;truncated&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
</span><span id=__span-2-16><a id=__codelineno-2-16 name=__codelineno-2-16 href=#__codelineno-2-16></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-2-17><a id=__codelineno-2-17 name=__codelineno-2-17 href=#__codelineno-2-17></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-2-18><a id=__codelineno-2-18 name=__codelineno-2-18 href=#__codelineno-2-18></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=get-apihistoryorphan-raw>GET /api/history/orphan-raw<a class=headerlink href=#get-apihistoryorphan-raw title="Permanent link">&para;</a></h2> <p>Sucht RAW-Ordner ohne zugehörigen Job.</p> <h2 id=post-apihistoryorphan-rawimport>POST /api/history/orphan-raw/import<a class=headerlink href=#post-apihistoryorphan-rawimport title="Permanent link">&para;</a></h2> <p>Importiert einen RAW-Ordner als Job und triggert optional die Analyse des Imports.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;rawPath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/raw/Inception (2010) [tt1375666] - RAW - job-99&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p><strong>Response (Beispiel):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=p>{</span>
</span><span id=__span-4-2><a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a><span class=w> </span><span class=nt>&quot;job&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>77</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;FINISHED&quot;</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-4-3><a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a><span class=w> </span><span class=nt>&quot;activation&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;started&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-4-4><a id=__codelineno-4-4 name=__codelineno-4-4 href=#__codelineno-4-4></a><span class=w> </span><span class=nt>&quot;activationError&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-4-5><a id=__codelineno-4-5 name=__codelineno-4-5 href=#__codelineno-4-5></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apihistoryidmetadataassign>POST /api/history/:id/metadata/assign<a class=headerlink href=#post-apihistoryidmetadataassign title="Permanent link">&para;</a></h2> <p>Weist TMDb-Metadaten nachträglich zu oder aktualisiert bestehende Film-/Serien-Metadaten eines Jobs.</p> <h2 id=post-apihistoryidcdassign>POST /api/history/:id/cd/assign<a class=headerlink href=#post-apihistoryidcdassign title="Permanent link">&para;</a></h2> <p>Weist CD-Metadaten (z. B. MusicBrainz) nachträglich zu.</p> <h2 id=post-apihistoryiderrorack>POST /api/history/:id/error/ack<a class=headerlink href=#post-apihistoryiderrorack title="Permanent link">&para;</a></h2> <p>Quittiert einen Fehlerzustand im Historieneintrag.</p> <hr> <h2 id=get-apihistoryiddelete-preview>GET /api/history/:id/delete-preview<a class=headerlink href=#get-apihistoryiddelete-preview title="Permanent link">&para;</a></h2> <p>Liefert eine Vorschau der löschbaren Pfade (inkl. Scope auf verknüpfte Jobs).</p> <p><strong>Query-Parameter:</strong></p> <table> <thead> <tr> <th>Parameter</th> <th>Typ</th> <th>Standard</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>includeRelated</code></td> <td>bool</td> <td><code>true</code></td> <td>Verknüpfte Jobs in die Vorschau einbeziehen.</td> </tr> </tbody> </table> <p><strong>Response (Beispiel):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=p>{</span>
</span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=w> </span><span class=nt>&quot;preview&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-5-3><a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-5-4><a id=__codelineno-5-4 name=__codelineno-5-4 href=#__codelineno-5-4></a><span class=w> </span><span class=nt>&quot;relatedJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=w> </span><span class=p>},</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>73</span><span class=w> </span><span class=p>}],</span>
</span><span id=__span-5-5><a id=__codelineno-5-5 name=__codelineno-5-5 href=#__codelineno-5-5></a><span class=w> </span><span class=nt>&quot;pathCandidates&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-5-6><a id=__codelineno-5-6 name=__codelineno-5-6 href=#__codelineno-5-6></a><span class=w> </span><span class=nt>&quot;raw&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[{</span><span class=w> </span><span class=nt>&quot;path&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/raw/...&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;exists&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;isDirectory&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=w> </span><span class=p>}],</span>
</span><span id=__span-5-7><a id=__codelineno-5-7 name=__codelineno-5-7 href=#__codelineno-5-7></a><span class=w> </span><span class=nt>&quot;movie&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[{</span><span class=w> </span><span class=nt>&quot;path&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/movies/...&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;exists&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;isDirectory&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=w> </span><span class=p>}]</span>
</span><span id=__span-5-8><a id=__codelineno-5-8 name=__codelineno-5-8 href=#__codelineno-5-8></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-5-9><a id=__codelineno-5-9 name=__codelineno-5-9 href=#__codelineno-5-9></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-5-10><a id=__codelineno-5-10 name=__codelineno-5-10 href=#__codelineno-5-10></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apihistoryiddelete-files>POST /api/history/:id/delete-files<a class=headerlink href=#post-apihistoryiddelete-files title="Permanent link">&para;</a></h2> <p>Löscht Dateien eines Jobs, behält DB-Eintrag.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a><span class=p>{</span>
</span><span id=__span-6-2><a id=__codelineno-6-2 name=__codelineno-6-2 href=#__codelineno-6-2></a><span class=w> </span><span class=nt>&quot;target&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;both&quot;</span><span class=p>,</span>
</span><span id=__span-6-3><a id=__codelineno-6-3 name=__codelineno-6-3 href=#__codelineno-6-3></a><span class=w> </span><span class=nt>&quot;includeRelated&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-6-4><a id=__codelineno-6-4 name=__codelineno-6-4 href=#__codelineno-6-4></a><span class=w> </span><span class=nt>&quot;selectedRawPaths&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;/mnt/raw/Inception - RAW - Disc1&quot;</span><span class=p>],</span>
</span><span id=__span-6-5><a id=__codelineno-6-5 name=__codelineno-6-5 href=#__codelineno-6-5></a><span class=w> </span><span class=nt>&quot;selectedMoviePaths&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;/mnt/movies/Inception (2010)&quot;</span><span class=p>]</span>
</span><span id=__span-6-6><a id=__codelineno-6-6 name=__codelineno-6-6 href=#__codelineno-6-6></a><span class=p>}</span>
</span></code></pre></div> <p><code>target</code>: <code>raw</code> | <code>movie</code> | <code>both</code></p> <p><code>selectedRawPaths</code> / <code>selectedMoviePaths</code> sind optional und begrenzen die Löschung auf ausgewählte Pfade aus der Vorschau.</p> <hr> <h2 id=post-apihistoryiddelete>POST /api/history/:id/delete<a class=headerlink href=#post-apihistoryiddelete title="Permanent link">&para;</a></h2> <p>Löscht Job aus DB; optional auch Dateien.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a><span class=p>{</span>
</span><span id=__span-7-2><a id=__codelineno-7-2 name=__codelineno-7-2 href=#__codelineno-7-2></a><span class=w> </span><span class=nt>&quot;target&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;both&quot;</span><span class=p>,</span>
</span><span id=__span-7-3><a id=__codelineno-7-3 name=__codelineno-7-3 href=#__codelineno-7-3></a><span class=w> </span><span class=nt>&quot;includeRelated&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-7-4><a id=__codelineno-7-4 name=__codelineno-7-4 href=#__codelineno-7-4></a><span class=w> </span><span class=nt>&quot;resetDriveState&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-7-5><a id=__codelineno-7-5 name=__codelineno-7-5 href=#__codelineno-7-5></a><span class=w> </span><span class=nt>&quot;keepDetectedDevice&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-7-6><a id=__codelineno-7-6 name=__codelineno-7-6 href=#__codelineno-7-6></a><span class=w> </span><span class=nt>&quot;preserveRawForImportJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-7-7><a id=__codelineno-7-7 name=__codelineno-7-7 href=#__codelineno-7-7></a><span class=w> </span><span class=nt>&quot;selectedRawPaths&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;/mnt/raw/Inception - RAW - Disc1&quot;</span><span class=p>],</span>
</span><span id=__span-7-8><a id=__codelineno-7-8 name=__codelineno-7-8 href=#__codelineno-7-8></a><span class=w> </span><span class=nt>&quot;selectedMoviePaths&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;/mnt/movies/Inception (2010)&quot;</span><span class=p>]</span>
</span><span id=__span-7-9><a id=__codelineno-7-9 name=__codelineno-7-9 href=#__codelineno-7-9></a><span class=p>}</span>
</span></code></pre></div> <p><code>target</code>: <code>none</code> | <code>raw</code> | <code>movie</code> | <code>both</code></p> <p><strong>Response (Beispiel):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a><span class=p>{</span>
</span><span id=__span-8-2><a id=__codelineno-8-2 name=__codelineno-8-2 href=#__codelineno-8-2></a><span class=w> </span><span class=nt>&quot;deleted&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-8-3><a id=__codelineno-8-3 name=__codelineno-8-3 href=#__codelineno-8-3></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-8-4><a id=__codelineno-8-4 name=__codelineno-8-4 href=#__codelineno-8-4></a><span class=w> </span><span class=nt>&quot;fileTarget&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;both&quot;</span><span class=p>,</span>
</span><span id=__span-8-5><a id=__codelineno-8-5 name=__codelineno-8-5 href=#__codelineno-8-5></a><span class=w> </span><span class=nt>&quot;fileSummary&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-8-6><a id=__codelineno-8-6 name=__codelineno-8-6 href=#__codelineno-8-6></a><span class=w> </span><span class=nt>&quot;target&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;both&quot;</span><span class=p>,</span>
</span><span id=__span-8-7><a id=__codelineno-8-7 name=__codelineno-8-7 href=#__codelineno-8-7></a><span class=w> </span><span class=nt>&quot;raw&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;filesDeleted&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>10</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-8-8><a id=__codelineno-8-8 name=__codelineno-8-8 href=#__codelineno-8-8></a><span class=w> </span><span class=nt>&quot;movie&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;filesDeleted&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-8-9><a id=__codelineno-8-9 name=__codelineno-8-9 href=#__codelineno-8-9></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-8-10><a id=__codelineno-8-10 name=__codelineno-8-10 href=#__codelineno-8-10></a><span class=w> </span><span class=nt>&quot;uiReset&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-8-11><a id=__codelineno-8-11 name=__codelineno-8-11 href=#__codelineno-8-11></a><span class=w> </span><span class=nt>&quot;reset&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-8-12><a id=__codelineno-8-12 name=__codelineno-8-12 href=#__codelineno-8-12></a><span class=w> </span><span class=nt>&quot;state&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;IDLE&quot;</span>
</span><span id=__span-8-13><a id=__codelineno-8-13 name=__codelineno-8-13 href=#__codelineno-8-13></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-8-14><a id=__codelineno-8-14 name=__codelineno-8-14 href=#__codelineno-8-14></a><span class=w> </span><span class=nt>&quot;safeguards&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-8-15><a id=__codelineno-8-15 name=__codelineno-8-15 href=#__codelineno-8-15></a><span class=w> </span><span class=nt>&quot;containsOrphanRawImportJob&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-8-16><a id=__codelineno-8-16 name=__codelineno-8-16 href=#__codelineno-8-16></a><span class=w> </span><span class=nt>&quot;resetDriveStateApplied&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-8-17><a id=__codelineno-8-17 name=__codelineno-8-17 href=#__codelineno-8-17></a><span class=w> </span><span class=nt>&quot;keepDetectedDeviceApplied&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span>
</span><span id=__span-8-18><a id=__codelineno-8-18 name=__codelineno-8-18 href=#__codelineno-8-18></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-8-19><a id=__codelineno-8-19 name=__codelineno-8-19 href=#__codelineno-8-19></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=hinweise>Hinweise<a class=headerlink href=#hinweise title="Permanent link">&para;</a></h2> <ul> <li>Ein aktiver Pipeline-Job kann nicht gelöscht werden (<code>409</code>).</li> <li>Löschoperationen sind irreversibel.</li> <li>Bei Serien-/Multipart-Containern steuern <code>includeRelated</code> und Pfadselektionen den genauen Scope.</li> </ul> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Zurück zum Seitenanfang </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/YOUR_GITHUB_USERNAME/ripster target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy", "content.code.annotate", "content.tabs.link", "toc.integrate"], "search": "../../assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}, "version": {"provider": "mike"}}</script> <script src=../../assets/javascripts/bundle.e71a0d61.min.js></script> </body> </html>
+2
View File
@@ -0,0 +1,2 @@
<!doctype html><html lang=de class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang"><meta name=author content=Michael><link href=https://mboehmlaender.github.io/ripster/api/ rel=canonical><link href=../pipeline/post-encode-scripts/ rel=prev><link href=pipeline/ rel=next><link rel=icon href=../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.0"><title>Anhang: API-Referenz - Ripster</title><link rel=stylesheet href=../assets/stylesheets/main.618322db.min.css><link rel=stylesheet href=../assets/stylesheets/palette.ab4e12ef.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../stylesheets/extra.css><script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#anhang-api-referenz class=md-skip> Zum Inhalt </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Kopfzeile> <a href=.. title=Ripster class="md-header__button md-logo" aria-label=Ripster data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 14a2 2 0 0 1-2-2c0-1.11.89-2 2-2s2 .89 2 2a2 2 0 0 1-2 2m0-10a8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8 8 8 0 0 0-8-8"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Ripster </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Anhang: API-Referenz </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Dunkelmodus aktivieren" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Dunkelmodus aktivieren" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Hellmodus aktivieren" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Hellmodus aktivieren" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.5Line truncated
</span></code></pre></div> <p>API-Prefix: <code>/api</code></p> <h2 id=api-gruppen>API-Gruppen<a class=headerlink href=#api-gruppen title="Permanent link">&para;</a></h2> <div class="grid cards"> <ul> <li> <p><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M7.5 4A5.5 5.5 0 0 0 2 9.5c0 .5.09 1 .22 1.5H6.3l1.27-3.37c.3-.8 1.48-.88 1.86 0L11.5 13l.59-1.42c.13-.33.48-.58.91-.58h8.78c.13-.5.22-1 .22-1.5A5.5 5.5 0 0 0 16.5 4c-1.86 0-3.5.93-4.5 2.34C11 4.93 9.36 4 7.5 4M3 12.5a1 1 0 0 0-1 1 1 1 0 0 0 1 1h2.44L11 20c1 .9 1 .9 2 0l5.56-5.5H21a1 1 0 0 0 1-1 1 1 0 0 0-1-1h-7.6l-.93 2.3c-.4 1.01-1.55.87-1.92.03L8.5 9.5l-.96 2.33c-.15.38-.49.67-.94.67z"/></svg></span> <strong>Health</strong></p> <hr> <p>Service-Liveness.</p> <p><code>GET /api/health</code></p> </li> <li> <p><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M22 14h-2v2h-6v-3h2v-2h-2V6a2 2 0 0 0-2-2H4V2H2v8h2V8h6v3H8v2h2v5a2 2 0 0 0 2 2h8v2h2"/></svg></span> <strong>Pipeline API</strong></p> <hr> <p>Analyse, Start/Retry/Cancel, Queue, Re-Encode.</p> <p><a href=pipeline/ ><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> Pipeline API</a></p> </li> <li> <p><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 15.5A3.5 3.5 0 0 1 8.5 12 3.5 3.5 0 0 1 12 8.5a3.5 3.5 0 0 1 3.5 3.5 3.5 3.5 0 0 1-3.5 3.5m7.43-2.53c.04-.32.07-.64.07-.97s-.03-.66-.07-1l2.11-1.63c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.31-.61-.22l-2.49 1c-.52-.39-1.06-.73-1.69-.98l-.37-2.65A.506.506 0 0 0 14 2h-4c-.25 0-.46.18-.5.42l-.37 2.65c-.63.25-1.17.59-1.69.98l-2.49-1c-.22-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64L4.57 11c-.04.34-.07.67-.07 1s.03.65.07.97l-2.11 1.66c-.19.15-.25.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1.01c.52.4 1.06.74 1.69.99l.37 2.65c.04.24.25.42.5.42h4c.25 0 .46-.18.5-.42l.37-2.65c.63-.26 1.17-.59 1.69-.99l2.49 1.01c.22.08.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64z"/></svg></span> <strong>Settings API</strong></p> <hr> <p>Einstellungen, Skripte/Ketten, User-Presets.</p> <p><a href=settings/ ><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> Settings API</a></p> </li> <li> <p><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13.5 8H12v5l4.28 2.54.72-1.21-3.5-2.08zM13 3a9 9 0 0 0-9 9H1l3.96 4.03L9 12H6a7 7 0 0 1 7-7 7 7 0 0 1 7 7 7 7 0 0 1-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42A8.9 8.9 0 0 0 13 21a9 9 0 0 0 9-9 9 9 0 0 0-9-9"/></svg></span> <strong>History API</strong></p> <hr> <p>Job-Historie, Orphan-Import, Löschoperationen.</p> <p><a href=history/ ><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> History API</a></p> </li> <li> <p><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 20a8 8 0 0 0 8-8 8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8m0-18a10 10 0 0 1 10 10 10 10 0 0 1-10 10C6.47 22 2 17.5 2 12A10 10 0 0 1 12 2m.5 5v5.25l4.5 2.67-.75 1.23L11 13V7z"/></svg></span> <strong>Cron API</strong></p> <hr> <p>Zeitgesteuerte Skript-/Kettenausführung.</p> <p><a href=crons/ ><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> Cron API</a></p> </li> <li> <p><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m21 9-4-4v3h-7v2h7v3M7 11l-4 4 4 4v-3h7v-2H7z"/></svg></span> <strong>Converter API</strong></p> <hr> <p>Datei-Explorer, Upload, Job-Verwaltung für den Converter.</p> <p><a href=converter/ ><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> Converter API</a></p> </li> <li> <p><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M5 20h14v-2H5m14-9h-4V3H9v6H5l7 7z"/></svg></span> <strong>Downloads API</strong></p> <hr> <p>Download-Queue für Ausgabedateien aus der Job-Historie.</p> <p><a href=downloads/ ><span classLine truncated
+187
View File
@@ -0,0 +1,187 @@
<!doctype html><html lang=de class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang"><meta name=author content=Michael><link href=https://mboehmlaender.github.io/ripster/api/pipeline/ rel=canonical><link href=../ rel=prev><link href=../settings/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.0"><title>Pipeline API - Ripster</title><link rel=stylesheet href=../../assets/stylesheets/main.618322db.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../stylesheets/extra.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#pipeline-api class=md-skip> Zum Inhalt </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Kopfzeile> <a href=../.. title=Ripster class="md-header__button md-logo" aria-label=Ripster data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 14a2 2 0 0 1-2-2c0-1.11.89-2 2-2s2 .89 2 2a2 2 0 0 1-2 2m0-10a8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8 8 8 0 0 0-8-8"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Ripster </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Pipeline API </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Dunkelmodus aktivieren" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Dunkelmodus aktivieren" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Hellmodus aktivieren" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Hellmodus aktivieren" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.2Line truncated
</span><span id=__span-0-2><a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=w> </span><span class=nt>&quot;pipeline&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-3><a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=w> </span><span class=nt>&quot;state&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;READY_TO_ENCODE&quot;</span><span class=p>,</span>
</span><span id=__span-0-4><a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=w> </span><span class=nt>&quot;activeJobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-0-5><a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=w> </span><span class=nt>&quot;progress&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span>
</span><span id=__span-0-6><a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=w> </span><span class=nt>&quot;eta&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-7><a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=w> </span><span class=nt>&quot;statusText&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Mediainfo bestätigt - Encode manuell starten&quot;</span><span class=p>,</span>
</span><span id=__span-0-8><a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=w> </span><span class=nt>&quot;context&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-9><a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span>
</span><span id=__span-0-10><a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-0-11><a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=w> </span><span class=nt>&quot;jobProgress&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-12><a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=w> </span><span class=nt>&quot;42&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-13><a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a><span class=w> </span><span class=nt>&quot;state&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;MEDIAINFO_CHECK&quot;</span><span class=p>,</span>
</span><span id=__span-0-14><a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a><span class=w> </span><span class=nt>&quot;progress&quot;</span><span class=p>:</span><span class=w> </span><span class=mf>68.5</span><span class=p>,</span>
</span><span id=__span-0-15><a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a><span class=w> </span><span class=nt>&quot;eta&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-16><a id=__codelineno-0-16 name=__codelineno-0-16 href=#__codelineno-0-16></a><span class=w> </span><span class=nt>&quot;statusText&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;MEDIAINFO_CHECK 68.50%&quot;</span>
</span><span id=__span-0-17><a id=__codelineno-0-17 name=__codelineno-0-17 href=#__codelineno-0-17></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-18><a id=__codelineno-0-18 name=__codelineno-0-18 href=#__codelineno-0-18></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-0-19><a id=__codelineno-0-19 name=__codelineno-0-19 href=#__codelineno-0-19></a><span class=w> </span><span class=nt>&quot;queue&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-20><a id=__codelineno-0-20 name=__codelineno-0-20 href=#__codelineno-0-20></a><span class=w> </span><span class=nt>&quot;maxParallelJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-0-21><a id=__codelineno-0-21 name=__codelineno-0-21 href=#__codelineno-0-21></a><span class=w> </span><span class=nt>&quot;runningCount&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-0-22><a id=__codelineno-0-22 name=__codelineno-0-22 href=#__codelineno-0-22></a><span class=w> </span><span class=nt>&quot;queuedCount&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span>
</span><span id=__span-0-23><a id=__codelineno-0-23 name=__codelineno-0-23 href=#__codelineno-0-23></a><span class=w> </span><span class=nt>&quot;runningJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span>
</span><span id=__span-0-24><a id=__codelineno-0-24 name=__codelineno-0-24 href=#__codelineno-0-24></a><span class=w> </span><span class=nt>&quot;queuedJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[]</span>
</span><span id=__span-0-25><a id=__codelineno-0-25 name=__codelineno-0-25 href=#__codelineno-0-25></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-26><a id=__codelineno-0-26 name=__codelineno-0-26 href=#__codelineno-0-26></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-0-27><a id=__codelineno-0-27 name=__codelineno-0-27 href=#__codelineno-0-27></a><span class=w> </span><span class=nt>&quot;hardwareMonitoring&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-28><a id=__codelineno-0-28 name=__codelineno-0-28 href=#__codelineno-0-28></a><span class=w> </span><span class=nt>&quot;enabled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-0-29><a id=__codelineno-0-29 name=__codelineno-0-29 href=#__codelineno-0-29></a><span class=w> </span><span class=nt>&quot;intervalMs&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>5000</span><span class=p>,</span>
</span><span id=__span-0-30><a id=__codelineno-0-30 name=__codelineno-0-30 href=#__codelineno-0-30></a><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T09:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-0-31><a id=__codelineno-0-31 name=__codelineno-0-31 href=#__codelineno-0-31></a><span class=w> </span><span class=nt>&quot;sample&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-32><a id=__codelineno-0-32 name=__codelineno-0-32 href=#__codelineno-0-32></a><span class=w> </span><span class=nt>&quot;cpu&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-0-33><a id=__codelineno-0-33 name=__codelineno-0-33 href=#__codelineno-0-33></a><span class=w> </span><span class=nt>&quot;memory&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-0-34><a id=__codelineno-0-34 name=__codelineno-0-34 href=#__codelineno-0-34></a><span class=w> </span><span class=nt>&quot;gpu&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-0-35><a id=__codelineno-0-35 name=__codelineno-0-35 href=#__codelineno-0-35></a><span class=w> </span><span class=nt>&quot;storage&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{}</span>
</span><span id=__span-0-36><a id=__codelineno-0-36 name=__codelineno-0-36 href=#__codelineno-0-36></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-0-37><a id=__codelineno-0-37 name=__codelineno-0-37 href=#__codelineno-0-37></a><span class=w> </span><span class=nt>&quot;error&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-0-38><a id=__codelineno-0-38 name=__codelineno-0-38 href=#__codelineno-0-38></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-39><a id=__codelineno-0-39 name=__codelineno-0-39 href=#__codelineno-0-39></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apipipelineanalyze>POST /api/pipeline/analyze<a class=headerlink href=#post-apipipelineanalyze title="Permanent link">&para;</a></h2> <p>Startet Disc-Analyse und legt Job an.</p> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span>
</span><span id=__span-1-2><a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-1-3><a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-1-4><a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=w> </span><span class=nt>&quot;detectedTitle&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;INCEPTION&quot;</span><span class=p>,</span>
</span><span id=__span-1-5><a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=w> </span><span class=nt>&quot;omdbCandidates&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[]</span>
</span><span id=__span-1-6><a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-1-7><a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apipipelinerescan-disc>POST /api/pipeline/rescan-disc<a class=headerlink href=#post-apipipelinerescan-disc title="Permanent link">&para;</a></h2> <p>Erzwingt erneute Laufwerksprüfung.</p> <p><strong>Response (Beispiel):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span>
</span><span id=__span-2-2><a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-2-3><a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=w> </span><span class=nt>&quot;present&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-2-4><a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a><span class=w> </span><span class=nt>&quot;changed&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-2-5><a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a><span class=w> </span><span class=nt>&quot;emitted&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;discInserted&quot;</span><span class=p>,</span>
</span><span id=__span-2-6><a id=__codelineno-2-6 name=__codelineno-2-6 href=#__codelineno-2-6></a><span class=w> </span><span class=nt>&quot;device&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-2-7><a id=__codelineno-2-7 name=__codelineno-2-7 href=#__codelineno-2-7></a><span class=w> </span><span class=nt>&quot;path&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/dev/sr0&quot;</span><span class=p>,</span>
</span><span id=__span-2-8><a id=__codelineno-2-8 name=__codelineno-2-8 href=#__codelineno-2-8></a><span class=w> </span><span class=nt>&quot;discLabel&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;INCEPTION&quot;</span><span class=p>,</span>
</span><span id=__span-2-9><a id=__codelineno-2-9 name=__codelineno-2-9 href=#__codelineno-2-9></a><span class=w> </span><span class=nt>&quot;mediaProfile&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;bluray&quot;</span>
</span><span id=__span-2-10><a id=__codelineno-2-10 name=__codelineno-2-10 href=#__codelineno-2-10></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-2-11><a id=__codelineno-2-11 name=__codelineno-2-11 href=#__codelineno-2-11></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-2-12><a id=__codelineno-2-12 name=__codelineno-2-12 href=#__codelineno-2-12></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apipipelinerescan-drive>POST /api/pipeline/rescan-drive<a class=headerlink href=#post-apipipelinerescan-drive title="Permanent link">&para;</a></h2> <p>Erzwingt Rescan für ein konkretes Laufwerk.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;devicePath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/dev/sr0&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=get-apipipelinetmdbmoviesearchq>GET /api/pipeline/tmdb/movie/search?q=<query><a class=headerlink href=#get-apipipelinetmdbmoviesearchq title="Permanent link">&para;</a></h2> <p>TMDb-Filmsuche.</p> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=p>{</span>
</span><span id=__span-4-2><a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a><span class=w> </span><span class=nt>&quot;results&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-4-3><a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-4-4><a id=__codelineno-4-4 name=__codelineno-4-4 href=#__codelineno-4-4></a><span class=w> </span><span class=nt>&quot;imdbId&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;tt1375666&quot;</span><span class=p>,</span>
</span><span id=__span-4-5><a id=__codelineno-4-5 name=__codelineno-4-5 href=#__codelineno-4-5></a><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Inception&quot;</span><span class=p>,</span>
</span><span id=__span-4-6><a id=__codelineno-4-6 name=__codelineno-4-6 href=#__codelineno-4-6></a><span class=w> </span><span class=nt>&quot;year&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2010&quot;</span><span class=p>,</span>
</span><span id=__span-4-7><a id=__codelineno-4-7 name=__codelineno-4-7 href=#__codelineno-4-7></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;movie&quot;</span><span class=p>,</span>
</span><span id=__span-4-8><a id=__codelineno-4-8 name=__codelineno-4-8 href=#__codelineno-4-8></a><span class=w> </span><span class=nt>&quot;poster&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;https://...&quot;</span>
</span><span id=__span-4-9><a id=__codelineno-4-9 name=__codelineno-4-9 href=#__codelineno-4-9></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-4-10><a id=__codelineno-4-10 name=__codelineno-4-10 href=#__codelineno-4-10></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-4-11><a id=__codelineno-4-11 name=__codelineno-4-11 href=#__codelineno-4-11></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=get-apipipelinetmdbseriessearchqseason>GET /api/pipeline/tmdb/series/search?q=<query>&amp;season=<n><a class=headerlink href=#get-apipipelinetmdbseriessearchqseason title="Permanent link">&para;</a></h2> <p>TMDb-Seriensuche (für Serien-Workflow bei DVD/Blu-ray).</p> <hr> <h2 id=get-apipipelinecddrives>GET /api/pipeline/cd/drives<a class=headerlink href=#get-apipipelinecddrives title="Permanent link">&para;</a></h2> <p>Liefert Snapshot der aktuell bekannten CD-Laufwerke.</p> <hr> <h2 id=get-apipipelinecdmusicbrainzsearchq>GET /api/pipeline/cd/musicbrainz/search?q=<query><a class=headerlink href=#get-apipipelinecdmusicbrainzsearchq title="Permanent link">&para;</a></h2> <p>MusicBrainz-Suche für CD-Metadaten.</p> <h2 id=get-apipipelinecdmusicbrainzreleasembid>GET /api/pipeline/cd/musicbrainz/release/:mbId<a class=headerlink href=#get-apipipelinecdmusicbrainzreleasembid title="Permanent link">&para;</a></h2> <p>Lädt Release-Details zu einer MusicBrainz-ID.</p> <h2 id=post-apipipelinecdselect-metadata>POST /api/pipeline/cd/select-metadata<a class=headerlink href=#post-apipipelinecdselect-metadata title="Permanent link">&para;</a></h2> <p>Übernimmt CD-Metadaten für einen Job.</p> <p><strong>Request (Beispiel):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=p>{</span>
</span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>91</span><span class=p>,</span>
</span><span id=__span-5-3><a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Album&quot;</span><span class=p>,</span>
</span><span id=__span-5-4><a id=__codelineno-5-4 name=__codelineno-5-4 href=#__codelineno-5-4></a><span class=w> </span><span class=nt>&quot;artist&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Artist&quot;</span><span class=p>,</span>
</span><span id=__span-5-5><a id=__codelineno-5-5 name=__codelineno-5-5 href=#__codelineno-5-5></a><span class=w> </span><span class=nt>&quot;year&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2020</span><span class=p>,</span>
</span><span id=__span-5-6><a id=__codelineno-5-6 name=__codelineno-5-6 href=#__codelineno-5-6></a><span class=w> </span><span class=nt>&quot;mbId&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;f5093c06-23e3-404f-aeaa-40f72885ee3a&quot;</span><span class=p>,</span>
</span><span id=__span-5-7><a id=__codelineno-5-7 name=__codelineno-5-7 href=#__codelineno-5-7></a><span class=w> </span><span class=nt>&quot;coverUrl&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;https://...&quot;</span><span class=p>,</span>
</span><span id=__span-5-8><a id=__codelineno-5-8 name=__codelineno-5-8 href=#__codelineno-5-8></a><span class=w> </span><span class=nt>&quot;tracks&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[]</span>
</span><span id=__span-5-9><a id=__codelineno-5-9 name=__codelineno-5-9 href=#__codelineno-5-9></a><span class=p>}</span>
</span></code></pre></div> <h2 id=post-apipipelinecdstartjobid>POST /api/pipeline/cd/start/:jobId<a class=headerlink href=#post-apipipelinecdstartjobid title="Permanent link">&para;</a></h2> <p>Startet/queued CD-Rip mit Format-/Script-/Chain-Konfiguration.</p> <hr> <h2 id=post-apipipelineaudiobookupload>POST /api/pipeline/audiobook/upload<a class=headerlink href=#post-apipipelineaudiobookupload title="Permanent link">&para;</a></h2> <p>Upload von AAX-Datei (Multipart/FormData).</p> <p><strong>FormData-Felder:</strong></p> <ul> <li><code>file</code> (Pflicht)</li> <li><code>format</code> (optional)</li> <li><code>startImmediately</code> (optional)</li> </ul> <h2 id=get-apipipelineaudiobookpending-activation>GET /api/pipeline/audiobook/pending-activation<a class=headerlink href=#get-apipipelineaudiobookpending-activation title="Permanent link">&para;</a></h2> <p>Zeigt AAX-Jobs mit fehlenden Activation-Bytes.</p> <h2 id=post-apipipelineaudiobookstartjobid>POST /api/pipeline/audiobook/start/:jobId<a class=headerlink href=#post-apipipelineaudiobookstartjobid title="Permanent link">&para;</a></h2> <p>Startet Audiobook-Job mit optionaler Konfiguration.</p> <h2 id=get-apipipelineaudiobookjobs>GET /api/pipeline/audiobook/jobs<a class=headerlink href=#get-apipipelineaudiobookjobs title="Permanent link">&para;</a></h2> <p>Liefert Audiobook-Jobliste.</p> <h2 id=get-apipipelineaudiobookoutput-tree>GET /api/pipeline/audiobook/output-tree<a class=headerlink href=#get-apipipelineaudiobookoutput-tree title="Permanent link">&para;</a></h2> <p>Read-only Baumansicht des Audiobook-Ausgabeordners.</p> <hr> <h2 id=post-apipipelineselect-metadata>POST /api/pipeline/select-metadata<a class=headerlink href=#post-apipipelineselect-metadata title="Permanent link">&para;</a></h2> <p>Setzt Metadaten (und optional Playlist) für einen Job.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a><span class=p>{</span>
</span><span id=__span-6-2><a id=__codelineno-6-2 name=__codelineno-6-2 href=#__codelineno-6-2></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-6-3><a id=__codelineno-6-3 name=__codelineno-6-3 href=#__codelineno-6-3></a><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Inception&quot;</span><span class=p>,</span>
</span><span id=__span-6-4><a id=__codelineno-6-4 name=__codelineno-6-4 href=#__codelineno-6-4></a><span class=w> </span><span class=nt>&quot;year&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2010</span><span class=p>,</span>
</span><span id=__span-6-5><a id=__codelineno-6-5 name=__codelineno-6-5 href=#__codelineno-6-5></a><span class=w> </span><span class=nt>&quot;imdbId&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;tt1375666&quot;</span><span class=p>,</span>
</span><span id=__span-6-6><a id=__codelineno-6-6 name=__codelineno-6-6 href=#__codelineno-6-6></a><span class=w> </span><span class=nt>&quot;poster&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;https://...&quot;</span><span class=p>,</span>
</span><span id=__span-6-7><a id=__codelineno-6-7 name=__codelineno-6-7 href=#__codelineno-6-7></a><span class=w> </span><span class=nt>&quot;fromOmdb&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-6-8><a id=__codelineno-6-8 name=__codelineno-6-8 href=#__codelineno-6-8></a><span class=w> </span><span class=nt>&quot;selectedPlaylist&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;00800&quot;</span>
</span><span id=__span-6-9><a id=__codelineno-6-9 name=__codelineno-6-9 href=#__codelineno-6-9></a><span class=p>}</span>
</span></code></pre></div> <p>Wichtige optionale Felder:</p> <ul> <li><code>selectedHandBrakeTitleId</code> / <code>selectedHandBrakeTitleIds</code>: Titel-Auswahl für Review/MediaInfo.</li> <li><code>metadataProvider</code>: <code>omdb</code> oder <code>tmdb</code>.</li> <li><code>workflowKind</code>: bei Disc-Jobs typischerweise <code>film</code> oder <code>series</code>.</li> <li><code>discNumber</code>: Pflicht für Serien-Disc-Zuordnung (<code>workflowKind=series</code>).</li> <li><code>duplicateAction</code>: Duplikatverhalten bei Film-Metadaten (<code>allow_new</code> oder <code>multipart_movie</code>).</li> <li><code>existingJobId</code>: optionaler Referenzjob für <code>multipart_movie</code>.</li> <li><code>existingDiscNumber</code>: Disc-Nummer des bestehenden Jobs für <code>multipart_movie</code>.</li> </ul> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;job&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;READY_TO_START&quot;</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p><strong>Konflikt-Response (Beispiel, HTTP 409):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a><span class=p>{</span>
</span><span id=__span-8-2><a id=__codelineno-8-2 name=__codelineno-8-2 href=#__codelineno-8-2></a><span class=w> </span><span class=nt>&quot;message&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Metadaten bereits in der Historie gefunden. Bitte Auswahl übernehmen oder Multipart movie wählen.&quot;</span><span class=p>,</span>
</span><span id=__span-8-3><a id=__codelineno-8-3 name=__codelineno-8-3 href=#__codelineno-8-3></a><span class=w> </span><span class=nt>&quot;details&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-8-4><a id=__codelineno-8-4 name=__codelineno-8-4 href=#__codelineno-8-4></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-8-5><a id=__codelineno-8-5 name=__codelineno-8-5 href=#__codelineno-8-5></a><span class=w> </span><span class=nt>&quot;code&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;METADATA_DUPLICATE_FOUND&quot;</span><span class=p>,</span>
</span><span id=__span-8-6><a id=__codelineno-8-6 name=__codelineno-8-6 href=#__codelineno-8-6></a><span class=w> </span><span class=nt>&quot;mediaProfile&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;bluray&quot;</span><span class=p>,</span>
</span><span id=__span-8-7><a id=__codelineno-8-7 name=__codelineno-8-7 href=#__codelineno-8-7></a><span class=w> </span><span class=nt>&quot;existingJob&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-8-8><a id=__codelineno-8-8 name=__codelineno-8-8 href=#__codelineno-8-8></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>17</span><span class=p>,</span>
</span><span id=__span-8-9><a id=__codelineno-8-9 name=__codelineno-8-9 href=#__codelineno-8-9></a><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Inception&quot;</span><span class=p>,</span>
</span><span id=__span-8-10><a id=__codelineno-8-10 name=__codelineno-8-10 href=#__codelineno-8-10></a><span class=w> </span><span class=nt>&quot;year&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2010</span><span class=p>,</span>
</span><span id=__span-8-11><a id=__codelineno-8-11 name=__codelineno-8-11 href=#__codelineno-8-11></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;FINISHED&quot;</span><span class=p>,</span>
</span><span id=__span-8-12><a id=__codelineno-8-12 name=__codelineno-8-12 href=#__codelineno-8-12></a><span class=w> </span><span class=nt>&quot;jobKind&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;bluray&quot;</span><span class=p>,</span>
</span><span id=__span-8-13><a id=__codelineno-8-13 name=__codelineno-8-13 href=#__codelineno-8-13></a><span class=w> </span><span class=nt>&quot;discNumber&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-8-14><a id=__codelineno-8-14 name=__codelineno-8-14 href=#__codelineno-8-14></a><span class=w> </span><span class=nt>&quot;isMultipartMovie&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
</span><span id=__span-8-15><a id=__codelineno-8-15 name=__codelineno-8-15 href=#__codelineno-8-15></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-8-16><a id=__codelineno-8-16 name=__codelineno-8-16 href=#__codelineno-8-16></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-8-17><a id=__codelineno-8-17 name=__codelineno-8-17 href=#__codelineno-8-17></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-8-18><a id=__codelineno-8-18 name=__codelineno-8-18 href=#__codelineno-8-18></a><span class=p>}</span>
</span></code></pre></div> <p><strong>Relevante Fehlercodes (<code>POST /api/pipeline/select-metadata</code>):</strong></p> <table> <thead> <tr> <th>Code</th> <th>Bedeutung</th> </tr> </thead> <tbody> <tr> <td><code>METADATA_DUPLICATE_FOUND</code></td> <td>Film-Metadaten existieren bereits in der Historie (Konfliktdialog im UI).</td> </tr> <tr> <td><code>MULTIPART_DISC_REQUIRED</code></td> <td>Für Multipart fehlen Disc-Nummern (<code>discNumber</code>/<code>existingDiscNumber</code>).</td> </tr> <tr> <td><code>MULTIPART_DISC_ALREADY_EXISTS</code></td> <td>Disc-Nummer im Multipart-Container bereits vergeben oder doppelt.</td> </tr> <tr> <td><code>MULTIPART_MEDIA_MISMATCH</code></td> <td>Multipart nur bei gleichem Medientyp (DVD oder Blu-ray).</td> </tr> <tr> <td><code>MULTIPART_SERIES_NOT_ALLOWED</code></td> <td>Multipart ist nur für Film-Jobs erlaubt, nicht für Serien-Workflow.</td> </tr> <tr> <td><code>MULTIPART_METADATA_MISMATCH</code></td> <td>Ausgewählter bestehender Job passt nicht zu den Film-Metadaten.</td> </tr> <tr> <td><code>SERIES_DISC_ALREADY_EXISTS</code></td> <td>Serien-Disc-Nummer innerhalb einer Staffel bereits vorhanden.</td> </tr> </tbody> </table> <hr> <h2 id=post-apipipelinejobsjobidraw-decision>POST /api/pipeline/jobs/:jobId/raw-decision<a class=headerlink href=#post-apipipelinejobsjobidraw-decision title="Permanent link">&para;</a></h2> <p>Trifft Entscheidung bei vorhandenem RAW (<code>continue</code> oder <code>restart</code> je nach Dialogfluss).</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-9-1><a id=__codelineno-9-1 name=__codelineno-9-1 href=#__codelineno-9-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;decision&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;continue&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apipipelinestartjobid>POST /api/pipeline/start/:jobId<a class=headerlink href=#post-apipipelinestartjobid title="Permanent link">&para;</a></h2> <p>Startet vorbereiteten Job oder queued ihn (je nach Parallel-Limit).</p> <p><strong>Mögliche Responses:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-10-1><a id=__codelineno-10-1 name=__codelineno-10-1 href=#__codelineno-10-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;started&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;stage&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;RIPPING&quot;</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <div class="language-json highlight"><pre><span></span><code><span id=__span-11-1><a id=__codelineno-11-1 name=__codelineno-11-1 href=#__codelineno-11-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;queued&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;started&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;queuePosition&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;action&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;START_PREPARED&quot;</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apipipelineconfirm-encodejobid>POST /api/pipeline/confirm-encode/:jobId<a class=headerlink href=#post-apipipelineconfirm-encodejobid title="Permanent link">&para;</a></h2> <p>Bestätigt Review-Auswahl (Tracks, Pre/Post-Skripte/Ketten, User-Preset).</p> <p><strong>Request (typisch):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-12-1><a id=__codelineno-12-1 name=__codelineno-12-1 href=#__codelineno-12-1></a><span class=p>{</span>
</span><span id=__span-12-2><a id=__codelineno-12-2 name=__codelineno-12-2 href=#__codelineno-12-2></a><span class=w> </span><span class=nt>&quot;selectedEncodeTitleId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-12-3><a id=__codelineno-12-3 name=__codelineno-12-3 href=#__codelineno-12-3></a><span class=w> </span><span class=nt>&quot;selectedTrackSelection&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-12-4><a id=__codelineno-12-4 name=__codelineno-12-4 href=#__codelineno-12-4></a><span class=w> </span><span class=nt>&quot;1&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-12-5><a id=__codelineno-12-5 name=__codelineno-12-5 href=#__codelineno-12-5></a><span class=w> </span><span class=nt>&quot;audioTrackIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=mi>2</span><span class=p>],</span>
</span><span id=__span-12-6><a id=__codelineno-12-6 name=__codelineno-12-6 href=#__codelineno-12-6></a><span class=w> </span><span class=nt>&quot;subtitleTrackIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>3</span><span class=p>]</span>
</span><span id=__span-12-7><a id=__codelineno-12-7 name=__codelineno-12-7 href=#__codelineno-12-7></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-12-8><a id=__codelineno-12-8 name=__codelineno-12-8 href=#__codelineno-12-8></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-12-9><a id=__codelineno-12-9 name=__codelineno-12-9 href=#__codelineno-12-9></a><span class=w> </span><span class=nt>&quot;selectedPreEncodeScriptIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>1</span><span class=p>],</span>
</span><span id=__span-12-10><a id=__codelineno-12-10 name=__codelineno-12-10 href=#__codelineno-12-10></a><span class=w> </span><span class=nt>&quot;selectedPostEncodeScriptIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>2</span><span class=p>,</span><span class=w> </span><span class=mi>7</span><span class=p>],</span>
</span><span id=__span-12-11><a id=__codelineno-12-11 name=__codelineno-12-11 href=#__codelineno-12-11></a><span class=w> </span><span class=nt>&quot;selectedPreEncodeChainIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>3</span><span class=p>],</span>
</span><span id=__span-12-12><a id=__codelineno-12-12 name=__codelineno-12-12 href=#__codelineno-12-12></a><span class=w> </span><span class=nt>&quot;selectedPostEncodeChainIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>4</span><span class=p>],</span>
</span><span id=__span-12-13><a id=__codelineno-12-13 name=__codelineno-12-13 href=#__codelineno-12-13></a><span class=w> </span><span class=nt>&quot;selectedUserPresetId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>5</span><span class=p>,</span>
</span><span id=__span-12-14><a id=__codelineno-12-14 name=__codelineno-12-14 href=#__codelineno-12-14></a><span class=w> </span><span class=nt>&quot;skipPipelineStateUpdate&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
</span><span id=__span-12-15><a id=__codelineno-12-15 name=__codelineno-12-15 href=#__codelineno-12-15></a><span class=p>}</span>
</span></code></pre></div> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-13-1><a id=__codelineno-13-1 name=__codelineno-13-1 href=#__codelineno-13-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;job&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;encode_review_confirmed&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apipipelinecancel>POST /api/pipeline/cancel<a class=headerlink href=#post-apipipelinecancel title="Permanent link">&para;</a></h2> <p>Bricht laufenden Job ab oder entfernt Queue-Eintrag.</p> <p><strong>Request (optional):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-14-1><a id=__codelineno-14-1 name=__codelineno-14-1 href=#__codelineno-14-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p><strong>Mögliche Responses:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-15-1><a id=__codelineno-15-1 name=__codelineno-15-1 href=#__codelineno-15-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;cancelled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;queuedOnly&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <div class="language-json highlight"><pre><span></span><code><span id=__span-16-1><a id=__codelineno-16-1 name=__codelineno-16-1 href=#__codelineno-16-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;cancelled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;queuedOnly&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <div class="language-json highlight"><pre><span></span><code><span id=__span-17-1><a id=__codelineno-17-1 name=__codelineno-17-1 href=#__codelineno-17-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;cancelled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;queuedOnly&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;pending&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apipipelineretryjobid>POST /api/pipeline/retry/:jobId<a class=headerlink href=#post-apipipelineretryjobid title="Permanent link">&para;</a></h2> <p>Retry für <code>ERROR</code>/<code>CANCELLED</code>-Jobs (oder Queue-Einreihung).</p> <h2 id=post-apipipelinereencodejobid>POST /api/pipeline/reencode/:jobId<a class=headerlink href=#post-apipipelinereencodejobid title="Permanent link">&para;</a></h2> <p>Startet Re-Encode aus bestehendem RAW.</p> <h2 id=post-apipipelinerestart-reviewjobid>POST /api/pipeline/restart-review/:jobId<a class=headerlink href=#post-apipipelinerestart-reviewjobid title="Permanent link">&para;</a></h2> <p>Berechnet Review aus RAW neu.</p> <h2 id=post-apipipelinerestart-encodejobid>POST /api/pipeline/restart-encode/:jobId<a class=headerlink href=#post-apipipelinerestart-encodejobid title="Permanent link">&para;</a></h2> <p>Startet Encoding mit letzter bestätigter Review neu.</p> <h2 id=post-apipipelinerestart-cd-reviewjobid>POST /api/pipeline/restart-cd-review/:jobId<a class=headerlink href=#post-apipipelinerestart-cd-reviewjobid title="Permanent link">&para;</a></h2> <p>Berechnet CD-Review aus vorhandenem RAW neu.</p> <h2 id=post-apipipelineresume-readyjobid>POST /api/pipeline/resume-ready/:jobId<a class=headerlink href=#post-apipipelineresume-readyjobid title="Permanent link">&para;</a></h2> <p>Lädt <code>READY_TO_ENCODE</code>-Job nach Neustart wieder in aktive Session.</p> <h2 id=get-apipipelineoutput-foldersjobid>GET /api/pipeline/output-folders/:jobId<a class=headerlink href=#get-apipipelineoutput-foldersjobid title="Permanent link">&para;</a></h2> <p>Liefert bekannte Output-Ordner entlang der Job-Lineage.</p> <h2 id=post-apipipelinedelete-output-foldersjobid>POST /api/pipeline/delete-output-folders/:jobId<a class=headerlink href=#post-apipipelinedelete-output-foldersjobid title="Permanent link">&para;</a></h2> <p>Löscht ausgewählte Output-Ordner.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-18-1><a id=__codelineno-18-1 name=__codelineno-18-1 href=#__codelineno-18-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;folderPaths&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;/mnt/movies/Inception (2010)&quot;</span><span class=p>]</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p>Alle Endpunkte liefern <code>{ result: ... }</code> bzw. <code>{ job: ... }</code>.</p> <hr> <h2 id=queue-endpunkte>Queue-Endpunkte<a class=headerlink href=#queue-endpunkte title="Permanent link">&para;</a></h2> <h3 id=get-apipipelinequeue>GET /api/pipeline/queue<a class=headerlink href=#get-apipipelinequeue title="Permanent link">&para;</a></h3> <p>Liefert Queue-Snapshot.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-19-1><a id=__codelineno-19-1 name=__codelineno-19-1 href=#__codelineno-19-1></a><span class=p>{</span>
</span><span id=__span-19-2><a id=__codelineno-19-2 name=__codelineno-19-2 href=#__codelineno-19-2></a><span class=w> </span><span class=nt>&quot;queue&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-19-3><a id=__codelineno-19-3 name=__codelineno-19-3 href=#__codelineno-19-3></a><span class=w> </span><span class=nt>&quot;maxParallelJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-19-4><a id=__codelineno-19-4 name=__codelineno-19-4 href=#__codelineno-19-4></a><span class=w> </span><span class=nt>&quot;runningCount&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-19-5><a id=__codelineno-19-5 name=__codelineno-19-5 href=#__codelineno-19-5></a><span class=w> </span><span class=nt>&quot;queuedCount&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-19-6><a id=__codelineno-19-6 name=__codelineno-19-6 href=#__codelineno-19-6></a><span class=w> </span><span class=nt>&quot;runningJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-19-7><a id=__codelineno-19-7 name=__codelineno-19-7 href=#__codelineno-19-7></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-19-8><a id=__codelineno-19-8 name=__codelineno-19-8 href=#__codelineno-19-8></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>41</span><span class=p>,</span>
</span><span id=__span-19-9><a id=__codelineno-19-9 name=__codelineno-19-9 href=#__codelineno-19-9></a><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Inception&quot;</span><span class=p>,</span>
</span><span id=__span-19-10><a id=__codelineno-19-10 name=__codelineno-19-10 href=#__codelineno-19-10></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ENCODING&quot;</span><span class=p>,</span>
</span><span id=__span-19-11><a id=__codelineno-19-11 name=__codelineno-19-11 href=#__codelineno-19-11></a><span class=w> </span><span class=nt>&quot;lastState&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ENCODING&quot;</span>
</span><span id=__span-19-12><a id=__codelineno-19-12 name=__codelineno-19-12 href=#__codelineno-19-12></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-19-13><a id=__codelineno-19-13 name=__codelineno-19-13 href=#__codelineno-19-13></a><span class=w> </span><span class=p>],</span>
</span><span id=__span-19-14><a id=__codelineno-19-14 name=__codelineno-19-14 href=#__codelineno-19-14></a><span class=w> </span><span class=nt>&quot;queuedJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-19-15><a id=__codelineno-19-15 name=__codelineno-19-15 href=#__codelineno-19-15></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-19-16><a id=__codelineno-19-16 name=__codelineno-19-16 href=#__codelineno-19-16></a><span class=w> </span><span class=nt>&quot;entryId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>11</span><span class=p>,</span>
</span><span id=__span-19-17><a id=__codelineno-19-17 name=__codelineno-19-17 href=#__codelineno-19-17></a><span class=w> </span><span class=nt>&quot;position&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-19-18><a id=__codelineno-19-18 name=__codelineno-19-18 href=#__codelineno-19-18></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;job&quot;</span><span class=p>,</span>
</span><span id=__span-19-19><a id=__codelineno-19-19 name=__codelineno-19-19 href=#__codelineno-19-19></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-19-20><a id=__codelineno-19-20 name=__codelineno-19-20 href=#__codelineno-19-20></a><span class=w> </span><span class=nt>&quot;action&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;START_PREPARED&quot;</span><span class=p>,</span>
</span><span id=__span-19-21><a id=__codelineno-19-21 name=__codelineno-19-21 href=#__codelineno-19-21></a><span class=w> </span><span class=nt>&quot;actionLabel&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Start&quot;</span><span class=p>,</span>
</span><span id=__span-19-22><a id=__codelineno-19-22 name=__codelineno-19-22 href=#__codelineno-19-22></a><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Matrix&quot;</span><span class=p>,</span>
</span><span id=__span-19-23><a id=__codelineno-19-23 name=__codelineno-19-23 href=#__codelineno-19-23></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;READY_TO_ENCODE&quot;</span><span class=p>,</span>
</span><span id=__span-19-24><a id=__codelineno-19-24 name=__codelineno-19-24 href=#__codelineno-19-24></a><span class=w> </span><span class=nt>&quot;lastState&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;READY_TO_ENCODE&quot;</span><span class=p>,</span>
</span><span id=__span-19-25><a id=__codelineno-19-25 name=__codelineno-19-25 href=#__codelineno-19-25></a><span class=w> </span><span class=nt>&quot;hasScripts&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-19-26><a id=__codelineno-19-26 name=__codelineno-19-26 href=#__codelineno-19-26></a><span class=w> </span><span class=nt>&quot;hasChains&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-19-27><a id=__codelineno-19-27 name=__codelineno-19-27 href=#__codelineno-19-27></a><span class=w> </span><span class=nt>&quot;enqueuedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T09:00:00.000Z&quot;</span>
</span><span id=__span-19-28><a id=__codelineno-19-28 name=__codelineno-19-28 href=#__codelineno-19-28></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-19-29><a id=__codelineno-19-29 name=__codelineno-19-29 href=#__codelineno-19-29></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-19-30><a id=__codelineno-19-30 name=__codelineno-19-30 href=#__codelineno-19-30></a><span class=w> </span><span class=nt>&quot;entryId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>12</span><span class=p>,</span>
</span><span id=__span-19-31><a id=__codelineno-19-31 name=__codelineno-19-31 href=#__codelineno-19-31></a><span class=w> </span><span class=nt>&quot;position&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span>
</span><span id=__span-19-32><a id=__codelineno-19-32 name=__codelineno-19-32 href=#__codelineno-19-32></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;wait&quot;</span><span class=p>,</span>
</span><span id=__span-19-33><a id=__codelineno-19-33 name=__codelineno-19-33 href=#__codelineno-19-33></a><span class=w> </span><span class=nt>&quot;waitSeconds&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>30</span><span class=p>,</span>
</span><span id=__span-19-34><a id=__codelineno-19-34 name=__codelineno-19-34 href=#__codelineno-19-34></a><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Warten 30s&quot;</span><span class=p>,</span>
</span><span id=__span-19-35><a id=__codelineno-19-35 name=__codelineno-19-35 href=#__codelineno-19-35></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;QUEUED&quot;</span><span class=p>,</span>
</span><span id=__span-19-36><a id=__codelineno-19-36 name=__codelineno-19-36 href=#__codelineno-19-36></a><span class=w> </span><span class=nt>&quot;enqueuedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T09:01:00.000Z&quot;</span>
</span><span id=__span-19-37><a id=__codelineno-19-37 name=__codelineno-19-37 href=#__codelineno-19-37></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-19-38><a id=__codelineno-19-38 name=__codelineno-19-38 href=#__codelineno-19-38></a><span class=w> </span><span class=p>],</span>
</span><span id=__span-19-39><a id=__codelineno-19-39 name=__codelineno-19-39 href=#__codelineno-19-39></a><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T09:01:02.000Z&quot;</span>
</span><span id=__span-19-40><a id=__codelineno-19-40 name=__codelineno-19-40 href=#__codelineno-19-40></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-19-41><a id=__codelineno-19-41 name=__codelineno-19-41 href=#__codelineno-19-41></a><span class=p>}</span>
</span></code></pre></div> <h3 id=post-apipipelinequeuereorder>POST /api/pipeline/queue/reorder<a class=headerlink href=#post-apipipelinequeuereorder title="Permanent link">&para;</a></h3> <p>Sortiert Queue-Einträge neu.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-20-1><a id=__codelineno-20-1 name=__codelineno-20-1 href=#__codelineno-20-1></a><span class=p>{</span>
</span><span id=__span-20-2><a id=__codelineno-20-2 name=__codelineno-20-2 href=#__codelineno-20-2></a><span class=w> </span><span class=nt>&quot;orderedEntryIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>12</span><span class=p>,</span><span class=w> </span><span class=mi>11</span><span class=p>]</span>
</span><span id=__span-20-3><a id=__codelineno-20-3 name=__codelineno-20-3 href=#__codelineno-20-3></a><span class=p>}</span>
</span></code></pre></div> <p>Legacy fallback wird akzeptiert:</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-21-1><a id=__codelineno-21-1 name=__codelineno-21-1 href=#__codelineno-21-1></a><span class=p>{</span>
</span><span id=__span-21-2><a id=__codelineno-21-2 name=__codelineno-21-2 href=#__codelineno-21-2></a><span class=w> </span><span class=nt>&quot;orderedJobIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>42</span><span class=p>,</span><span class=w> </span><span class=mi>43</span><span class=p>]</span>
</span><span id=__span-21-3><a id=__codelineno-21-3 name=__codelineno-21-3 href=#__codelineno-21-3></a><span class=p>}</span>
</span></code></pre></div> <h3 id=post-apipipelinequeueentry>POST /api/pipeline/queue/entry<a class=headerlink href=#post-apipipelinequeueentry title="Permanent link">&para;</a></h3> <p>Fügt Nicht-Job-Queue-Eintrag hinzu (<code>script</code>, <code>chain</code>, <code>wait</code>).</p> <p><strong>Request-Beispiele:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-22-1><a id=__codelineno-22-1 name=__codelineno-22-1 href=#__codelineno-22-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;script&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;scriptId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <div class="language-json highlight"><pre><span></span><code><span id=__span-23-1><a id=__codelineno-23-1 name=__codelineno-23-1 href=#__codelineno-23-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;chain&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;chainId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;insertAfterEntryId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>11</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <div class="language-json highlight"><pre><span></span><code><span id=__span-24-1><a id=__codelineno-24-1 name=__codelineno-24-1 href=#__codelineno-24-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;wait&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;waitSeconds&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>45</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-25-1><a id=__codelineno-25-1 name=__codelineno-25-1 href=#__codelineno-25-1></a><span class=p>{</span>
</span><span id=__span-25-2><a id=__codelineno-25-2 name=__codelineno-25-2 href=#__codelineno-25-2></a><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;entryId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>12</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;wait&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;position&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-25-3><a id=__codelineno-25-3 name=__codelineno-25-3 href=#__codelineno-25-3></a><span class=w> </span><span class=nt>&quot;queue&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;...&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-25-4><a id=__codelineno-25-4 name=__codelineno-25-4 href=#__codelineno-25-4></a><span class=p>}</span>
</span></code></pre></div> <h3 id=delete-apipipelinequeueentryentryid>DELETE /api/pipeline/queue/entry/:entryId<a class=headerlink href=#delete-apipipelinequeueentryentryid title="Permanent link">&para;</a></h3> <p>Entfernt Queue-Eintrag.</p> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-26-1><a id=__codelineno-26-1 name=__codelineno-26-1 href=#__codelineno-26-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;queue&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;...&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=pipeline-zustande>Pipeline-Zustände<a class=headerlink href=#pipeline-zustande title="Permanent link">&para;</a></h2> <table> <thead> <tr> <th>State</th> <th>Bedeutung</th> </tr> </thead> <tbody> <tr> <td><code>IDLE</code></td> <td>Wartet auf Medium</td> </tr> <tr> <td><code>DISC_DETECTED</code></td> <td>Medium erkannt</td> </tr> <tr> <td><code>ANALYZING</code></td> <td>MakeMKV-Analyse läuft</td> </tr> <tr> <td><code>METADATA_SELECTION</code></td> <td>Metadaten-Auswahl</td> </tr> <tr> <td><code>WAITING_FOR_USER_DECISION</code></td> <td>Nutzerentscheidung erforderlich (Playlist-Auswahl oder RAW-Entscheidung)</td> </tr> <tr> <td><code>READY_TO_START</code></td> <td>Übergang vor Start</td> </tr> <tr> <td><code>RIPPING</code></td> <td>MakeMKV-Rip läuft</td> </tr> <tr> <td><code>MEDIAINFO_CHECK</code></td> <td>Titel-/Track-Auswertung</td> </tr> <tr> <td><code>READY_TO_ENCODE</code></td> <td>Review bereit</td> </tr> <tr> <td><code>ENCODING</code></td> <td>HandBrake-Encoding läuft</td> </tr> <tr> <td><code>CD_METADATA_SELECTION</code></td> <td>CD-Metadatenauswahl aktiv</td> </tr> <tr> <td><code>CD_READY_TO_RIP</code></td> <td>CD-Job ist startbereit</td> </tr> <tr> <td><code>CD_ANALYZING</code></td> <td>CD-Struktur/Tracks werden vorbereitet</td> </tr> <tr> <td><code>CD_RIPPING</code></td> <td>CD-Ripping läuft</td> </tr> <tr> <td><code>CD_ENCODING</code></td> <td>CD-Encode läuft</td> </tr> <tr> <td><code>FINISHED</code></td> <td>Abgeschlossen</td> </tr> <tr> <td><code>DONE</code></td> <td>Abgeschlossen (v. a. Audiobook/Converter/CD-Varianten)</td> </tr> <tr> <td><code>CANCELLED</code></td> <td>Abgebrochen</td> </tr> <tr> <td><code>ERROR</code></td> <td>Fehler</td> </tr> </tbody> </table> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Zurück zum Seitenanfang </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/YOUR_GITHUB_USERNAME/ripster target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy", "content.code.annotate", "content.tabs.link", "tocLine truncated
+74
View File
@@ -0,0 +1,74 @@
<!doctype html><html lang=de class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang"><meta name=author content=Michael><link href=https://mboehmlaender.github.io/ripster/api/runtime-activities/ rel=canonical><link href=../downloads/ rel=prev><link href=../websocket/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.0"><title>Runtime Activities API - Ripster</title><link rel=stylesheet href=../../assets/stylesheets/main.618322db.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../stylesheets/extra.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#runtime-activities-api class=md-skip> Zum Inhalt </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Kopfzeile> <a href=../.. title=Ripster class="md-header__button md-logo" aria-label=Ripster data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 14a2 2 0 0 1-2-2c0-1.11.89-2 2-2s2 .89 2 2a2 2 0 0 1-2 2m0-10a8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8 8 8 0 0 0-8-8"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Ripster </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Runtime Activities API </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Dunkelmodus aktivieren" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Dunkelmodus aktivieren" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Hellmodus aktivieren" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Hellmodus aktivieren" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6Line truncated
</span><span id=__span-0-2><a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>7</span><span class=p>,</span>
</span><span id=__span-0-3><a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;chain&quot;</span><span class=p>,</span>
</span><span id=__span-0-4><a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Post-Encode Aufräumen&quot;</span><span class=p>,</span>
</span><span id=__span-0-5><a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;running&quot;</span><span class=p>,</span>
</span><span id=__span-0-6><a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=w> </span><span class=nt>&quot;source&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;cron&quot;</span><span class=p>,</span>
</span><span id=__span-0-7><a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=w> </span><span class=nt>&quot;message&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Schritt 2 von 3&quot;</span><span class=p>,</span>
</span><span id=__span-0-8><a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=w> </span><span class=nt>&quot;currentStep&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;cleanup.sh&quot;</span><span class=p>,</span>
</span><span id=__span-0-9><a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=w> </span><span class=nt>&quot;currentStepType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;script&quot;</span><span class=p>,</span>
</span><span id=__span-0-10><a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=w> </span><span class=nt>&quot;currentScriptName&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;cleanup.sh&quot;</span><span class=p>,</span>
</span><span id=__span-0-11><a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=w> </span><span class=nt>&quot;stepIndex&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span>
</span><span id=__span-0-12><a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=w> </span><span class=nt>&quot;stepTotal&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-0-13><a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a><span class=w> </span><span class=nt>&quot;parentActivityId&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-14><a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-0-15><a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a><span class=w> </span><span class=nt>&quot;cronJobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-0-16><a id=__codelineno-0-16 name=__codelineno-0-16 href=#__codelineno-0-16></a><span class=w> </span><span class=nt>&quot;chainId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>5</span><span class=p>,</span>
</span><span id=__span-0-17><a id=__codelineno-0-17 name=__codelineno-0-17 href=#__codelineno-0-17></a><span class=w> </span><span class=nt>&quot;scriptId&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-18><a id=__codelineno-0-18 name=__codelineno-0-18 href=#__codelineno-0-18></a><span class=w> </span><span class=nt>&quot;canCancel&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-0-19><a id=__codelineno-0-19 name=__codelineno-0-19 href=#__codelineno-0-19></a><span class=w> </span><span class=nt>&quot;canNextStep&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-0-20><a id=__codelineno-0-20 name=__codelineno-0-20 href=#__codelineno-0-20></a><span class=w> </span><span class=nt>&quot;outcome&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;running&quot;</span><span class=p>,</span>
</span><span id=__span-0-21><a id=__codelineno-0-21 name=__codelineno-0-21 href=#__codelineno-0-21></a><span class=w> </span><span class=nt>&quot;errorMessage&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-22><a id=__codelineno-0-22 name=__codelineno-0-22 href=#__codelineno-0-22></a><span class=w> </span><span class=nt>&quot;output&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-23><a id=__codelineno-0-23 name=__codelineno-0-23 href=#__codelineno-0-23></a><span class=w> </span><span class=nt>&quot;stdout&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-24><a id=__codelineno-0-24 name=__codelineno-0-24 href=#__codelineno-0-24></a><span class=w> </span><span class=nt>&quot;stderr&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-25><a id=__codelineno-0-25 name=__codelineno-0-25 href=#__codelineno-0-25></a><span class=w> </span><span class=nt>&quot;stdoutTruncated&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-0-26><a id=__codelineno-0-26 name=__codelineno-0-26 href=#__codelineno-0-26></a><span class=w> </span><span class=nt>&quot;stderrTruncated&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-0-27><a id=__codelineno-0-27 name=__codelineno-0-27 href=#__codelineno-0-27></a><span class=w> </span><span class=nt>&quot;startedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T10:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-0-28><a id=__codelineno-0-28 name=__codelineno-0-28 href=#__codelineno-0-28></a><span class=w> </span><span class=nt>&quot;finishedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-29><a id=__codelineno-0-29 name=__codelineno-0-29 href=#__codelineno-0-29></a><span class=w> </span><span class=nt>&quot;durationMs&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-30><a id=__codelineno-0-30 name=__codelineno-0-30 href=#__codelineno-0-30></a><span class=w> </span><span class=nt>&quot;exitCode&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-0-31><a id=__codelineno-0-31 name=__codelineno-0-31 href=#__codelineno-0-31></a><span class=w> </span><span class=nt>&quot;success&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-0-32><a id=__codelineno-0-32 name=__codelineno-0-32 href=#__codelineno-0-32></a><span class=p>}</span>
</span></code></pre></div> <h3 id=felder>Felder<a class=headerlink href=#felder title="Permanent link">&para;</a></h3> <table> <thead> <tr> <th>Feld</th> <th>Typ</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>id</code></td> <td><code>number</code></td> <td>Eindeutige ID (Laufzähler, nicht persistent)</td> </tr> <tr> <td><code>type</code></td> <td><code>string</code></td> <td>Art der Aktivität: <code>script</code> | <code>chain</code> | <code>cron</code> | <code>task</code></td> </tr> <tr> <td><code>name</code></td> <td><code>string \| null</code></td> <td>Anzeigename der Aktivität</td> </tr> <tr> <td><code>status</code></td> <td><code>string</code></td> <td>Aktueller Status: <code>running</code> | <code>success</code> | <code>error</code></td> </tr> <tr> <td><code>source</code></td> <td><code>string \| null</code></td> <td>Auslöser (z. B. <code>cron</code>, <code>pipeline</code>, <code>manual</code>)</td> </tr> <tr> <td><code>message</code></td> <td><code>string \| null</code></td> <td>Kurztext zum aktuellen Zustand</td> </tr> <tr> <td><code>currentStep</code></td> <td><code>string \| null</code></td> <td>Name des aktuell ausgeführten Schritts</td> </tr> <tr> <td><code>currentStepType</code></td> <td><code>string \| null</code></td> <td>Typ des Schritts (z. B. <code>script</code>, <code>wait</code>)</td> </tr> <tr> <td><code>currentScriptName</code></td> <td><code>string \| null</code></td> <td>Name des Skripts im aktuellen Schritt</td> </tr> <tr> <td><code>stepIndex</code></td> <td><code>number \| null</code></td> <td>Aktueller Schritt (1-basiert)</td> </tr> <tr> <td><code>stepTotal</code></td> <td><code>number \| null</code></td> <td>Gesamtanzahl Schritte</td> </tr> <tr> <td><code>parentActivityId</code></td> <td><code>number \| null</code></td> <td>ID der übergeordneten Aktivität</td> </tr> <tr> <td><code>jobId</code></td> <td><code>number \| null</code></td> <td>Verknüpfte Job-ID</td> </tr> <tr> <td><code>cronJobId</code></td> <td><code>number \| null</code></td> <td>Verknüpfte Cron-Job-ID</td> </tr> <tr> <td><code>chainId</code></td> <td><code>number \| null</code></td> <td>Verknüpfte Skript-Ketten-ID</td> </tr> <tr> <td><code>scriptId</code></td> <td><code>number \| null</code></td> <td>Verknüpfte Skript-ID</td> </tr> <tr> <td><code>canCancel</code></td> <td><code>boolean</code></td> <td>Abbrechen über API möglich</td> </tr> <tr> <td><code>canNextStep</code></td> <td><code>boolean</code></td> <td>Nächster Schritt über API auslösbar</td> </tr> <tr> <td><code>outcome</code></td> <td><code>string \| null</code></td> <td>Abschluss-Ergebnis: <code>success</code> | <code>error</code> | <code>cancelled</code> | <code>skipped</code> | <code>running</code></td> </tr> <tr> <td><code>errorMessage</code></td> <td><code>string \| null</code></td> <td>Fehlermeldung (max. 2.000 Zeichen)</td> </tr> <tr> <td><code>output</code></td> <td><code>string \| null</code></td> <td>Allgemeine Ausgabe (max. 12.000 Zeichen)</td> </tr> <tr> <td><code>stdout</code></td> <td><code>string \| null</code></td> <td>Standardausgabe des Prozesses (max. 12.000 Zeichen)</td> </tr> <tr> <td><code>stderr</code></td> <td><code>string \| null</code></td> <td>Fehlerausgabe des Prozesses (max. 12.000 Zeichen)</td> </tr> <tr> <td><code>stdoutTruncated</code></td> <td><code>boolean</code></td> <td><code>true</code>, wenn <code>stdout</code> gekürzt wurde</td> </tr> <tr> <td><code>stderrTruncated</code></td> <td><code>boolean</code></td> <td><code>true</code>, wenn <code>stderr</code> gekürzt wurde</td> </tr> <tr> <td><code>startedAt</code></td> <td><code>string</code></td> <td>ISO-8601-Zeitstempel des Starts</td> </tr> <tr> <td><code>finishedAt</code></td> <td><code>string \| null</code></td> <td>ISO-8601-Zeitstempel des Endes</td> </tr> <tr> <td><code>durationMs</code></td> <td><code>number \| null</code></td> <td>Laufzeit in Millisekunden</td> </tr> <tr> <td><code>exitCode</code></td> <td><code>number \| null</code></td> <td>Exit-Code des Prozesses</td> </tr> <tr> <td><code>success</code></td> <td><code>boolean \| null</code></td> <td>Erfolgsstatus (<code>null</code> bei laufender Aktivität)</td> </tr> </tbody> </table> <hr> <h2 id=snapshot-objekt>Snapshot-Objekt<a class=headerlink href=#snapshot-objekt title="Permanent link">&para;</a></h2> <p>Alle Aktivitäts-Endpunkte geben einen Snapshot zurück:</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span>
</span><span id=__span-1-2><a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=w> </span><span class=nt>&quot;active&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=w> </span><span class=cm>/* laufende Aktivitäten, nach startedAt absteigend */</span><span class=w> </span><span class=p>],</span>
</span><span id=__span-1-3><a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=w> </span><span class=nt>&quot;recent&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=w> </span><span class=cm>/* abgeschlossene Aktivitäten, nach finishedAt absteigend, max. 120 */</span><span class=w> </span><span class=p>],</span>
</span><span id=__span-1-4><a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T10:05:00.000Z&quot;</span>
</span><span id=__span-1-5><a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=endpunkte>Endpunkte<a class=headerlink href=#endpunkte title="Permanent link">&para;</a></h2> <h3 id=get-apiruntimeactivities>GET <code>/api/runtime/activities</code><a class=headerlink href=#get-apiruntimeactivities title="Permanent link">&para;</a></h3> <p>Aktuellen Aktivitäts-Snapshot abrufen.</p> <p><strong>Antwort:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span>
</span><span id=__span-2-2><a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a><span class=w> </span><span class=nt>&quot;active&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span>
</span><span id=__span-2-3><a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=w> </span><span class=nt>&quot;recent&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-2-4><a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-2-5><a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>5</span><span class=p>,</span>
</span><span id=__span-2-6><a id=__codelineno-2-6 name=__codelineno-2-6 href=#__codelineno-2-6></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;script&quot;</span><span class=p>,</span>
</span><span id=__span-2-7><a id=__codelineno-2-7 name=__codelineno-2-7 href=#__codelineno-2-7></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;notify.sh&quot;</span><span class=p>,</span>
</span><span id=__span-2-8><a id=__codelineno-2-8 name=__codelineno-2-8 href=#__codelineno-2-8></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;success&quot;</span><span class=p>,</span>
</span><span id=__span-2-9><a id=__codelineno-2-9 name=__codelineno-2-9 href=#__codelineno-2-9></a><span class=w> </span><span class=nt>&quot;outcome&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;success&quot;</span><span class=p>,</span>
</span><span id=__span-2-10><a id=__codelineno-2-10 name=__codelineno-2-10 href=#__codelineno-2-10></a><span class=w> </span><span class=nt>&quot;startedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T09:58:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-2-11><a id=__codelineno-2-11 name=__codelineno-2-11 href=#__codelineno-2-11></a><span class=w> </span><span class=nt>&quot;finishedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T09:58:02.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-2-12><a id=__codelineno-2-12 name=__codelineno-2-12 href=#__codelineno-2-12></a><span class=w> </span><span class=nt>&quot;durationMs&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2100</span><span class=p>,</span>
</span><span id=__span-2-13><a id=__codelineno-2-13 name=__codelineno-2-13 href=#__codelineno-2-13></a><span class=w> </span><span class=nt>&quot;exitCode&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span>
</span><span id=__span-2-14><a id=__codelineno-2-14 name=__codelineno-2-14 href=#__codelineno-2-14></a><span class=w> </span><span class=nt>&quot;success&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-2-15><a id=__codelineno-2-15 name=__codelineno-2-15 href=#__codelineno-2-15></a><span class=w> </span><span class=nt>&quot;canCancel&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-2-16><a id=__codelineno-2-16 name=__codelineno-2-16 href=#__codelineno-2-16></a><span class=w> </span><span class=nt>&quot;canNextStep&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
</span><span id=__span-2-17><a id=__codelineno-2-17 name=__codelineno-2-17 href=#__codelineno-2-17></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-2-18><a id=__codelineno-2-18 name=__codelineno-2-18 href=#__codelineno-2-18></a><span class=w> </span><span class=p>],</span>
</span><span id=__span-2-19><a id=__codelineno-2-19 name=__codelineno-2-19 href=#__codelineno-2-19></a><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T10:05:00.000Z&quot;</span>
</span><span id=__span-2-20><a id=__codelineno-2-20 name=__codelineno-2-20 href=#__codelineno-2-20></a><span class=p>}</span>
</span></code></pre></div> <hr> <h3 id=post-apiruntimeactivitiesidcancel>POST <code>/api/runtime/activities/:id/cancel</code><a class=headerlink href=#post-apiruntimeactivitiesidcancel title="Permanent link">&para;</a></h3> <p>Aktive Aktivität abbrechen (nur wenn <code>canCancel: true</code>).</p> <p><strong>Parameter:</strong></p> <table> <thead> <tr> <th>Name</th> <th>In</th> <th>Typ</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>id</code></td> <td>path</td> <td><code>number</code></td> <td>Aktivitäts-ID</td> </tr> <tr> <td><code>reason</code></td> <td>body</td> <td><code>string</code></td> <td>Optionaler Abbruchgrund</td> </tr> </tbody> </table> <p><strong>Request Body:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;reason&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Manueller Abbruch durch Benutzer&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p><strong>Antwort (Erfolg):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=p>{</span>
</span><span id=__span-4-2><a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a><span class=w> </span><span class=nt>&quot;ok&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-4-3><a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a><span class=w> </span><span class=nt>&quot;action&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-4-4><a id=__codelineno-4-4 name=__codelineno-4-4 href=#__codelineno-4-4></a><span class=w> </span><span class=nt>&quot;snapshot&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;active&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span><span class=w> </span><span class=nt>&quot;recent&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-4-5><a id=__codelineno-4-5 name=__codelineno-4-5 href=#__codelineno-4-5></a><span class=p>}</span>
</span></code></pre></div> <p><strong>Fehlercodes:</strong></p> <table> <thead> <tr> <th>HTTP</th> <th>Bedeutung</th> </tr> </thead> <tbody> <tr> <td><code>404</code></td> <td>Aktivität nicht gefunden oder bereits abgeschlossen</td> </tr> <tr> <td><code>409</code></td> <td>Abbrechen wird von dieser Aktivität nicht unterstützt</td> </tr> </tbody> </table> <hr> <h3 id=post-apiruntimeactivitiesidnext-step>POST <code>/api/runtime/activities/:id/next-step</code><a class=headerlink href=#post-apiruntimeactivitiesidnext-step title="Permanent link">&para;</a></h3> <p>Nächsten Schritt einer Aktivität auslösen (nur wenn <code>canNextStep: true</code>).</p> <p><strong>Parameter:</strong></p> <table> <thead> <tr> <th>Name</th> <th>In</th> <th>Typ</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code>id</code></td> <td>path</td> <td><code>number</code></td> <td>Aktivitäts-ID</td> </tr> </tbody> </table> <p><strong>Antwort (Erfolg):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=p>{</span>
</span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=w> </span><span class=nt>&quot;ok&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-5-3><a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=w> </span><span class=nt>&quot;action&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-5-4><a id=__codelineno-5-4 name=__codelineno-5-4 href=#__codelineno-5-4></a><span class=w> </span><span class=nt>&quot;snapshot&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;active&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span><span class=w> </span><span class=nt>&quot;recent&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-5-5><a id=__codelineno-5-5 name=__codelineno-5-5 href=#__codelineno-5-5></a><span class=p>}</span>
</span></code></pre></div> <p><strong>Fehlercodes:</strong></p> <table> <thead> <tr> <th>HTTP</th> <th>Bedeutung</th> </tr> </thead> <tbody> <tr> <td><code>404</code></td> <td>Aktivität nicht gefunden</td> </tr> <tr> <td><code>409</code></td> <td>Nächster Schritt wird von dieser Aktivität nicht unterstützt</td> </tr> </tbody> </table> <hr> <h3 id=post-apiruntimeactivitiesclear-recent>POST <code>/api/runtime/activities/clear-recent</code><a class=headerlink href=#post-apiruntimeactivitiesclear-recent title="Permanent link">&para;</a></h3> <p>Alle abgeschlossenen Aktivitäten aus <code>recent</code> löschen.</p> <p><strong>Antwort:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a><span class=p>{</span>
</span><span id=__span-6-2><a id=__codelineno-6-2 name=__codelineno-6-2 href=#__codelineno-6-2></a><span class=w> </span><span class=nt>&quot;ok&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-6-3><a id=__codelineno-6-3 name=__codelineno-6-3 href=#__codelineno-6-3></a><span class=w> </span><span class=nt>&quot;removed&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>14</span><span class=p>,</span>
</span><span id=__span-6-4><a id=__codelineno-6-4 name=__codelineno-6-4 href=#__codelineno-6-4></a><span class=w> </span><span class=nt>&quot;snapshot&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;active&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span><span class=w> </span><span class=nt>&quot;recent&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-6-5><a id=__codelineno-6-5 name=__codelineno-6-5 href=#__codelineno-6-5></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=grenzwerte>Grenzwerte<a class=headerlink href=#grenzwerte title="Permanent link">&para;</a></h2> <table> <thead> <tr> <th>Wert</th> <th>Limit</th> </tr> </thead> <tbody> <tr> <td>Maximale <code>recent</code>-Einträge</td> <td>120</td> </tr> <tr> <td>Maximale Länge <code>stdout</code> / <code>stderr</code> / <code>output</code></td> <td>12.000 Zeichen</td> </tr> <tr> <td>Maximale Länge <code>errorMessage</code> / <code>message</code></td> <td>2.000 Zeichen</td> </tr> <tr> <td>Maximale Länge <code>outcome</code></td> <td>40 Zeichen</td> </tr> </tbody> </table> <p>Gekürzte Ausgaben erhalten den Suffix <code>...[gekürzt]</code> (bei Inline-Text) bzw. <code>\n...[gekürzt]</code> (bei mehrzeiligem Output).</p> <hr> <h2 id=echtzeit-updates>Echtzeit-Updates<a class=headerlink href=#echtzeit-updates title="Permanent link">&para;</a></h2> <p>Änderungen werden automatisch als <a href=../websocket/#runtime_activity_changed><code>RUNTIME_ACTIVITY_CHANGED</code></a> WebSocket-Event gesendet. Die Frontend-Komponente braucht <code>GET /api/runtime/activities</code> nur beim initialen Laden aufzurufen.</p> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Zurück zum Seitenanfang </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/YOUR_GITHUB_USERNAME/ripster target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy", "content.code.annotate", "content.tabs.link", "toc.integrate"], "search": "../../assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "VersLine truncated
+140
View File
@@ -0,0 +1,140 @@
<!doctype html><html lang=de class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang"><meta name=author content=Michael><link href=https://mboehmlaender.github.io/ripster/api/settings/ rel=canonical><link href=../pipeline/ rel=prev><link href=../history/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.0"><title>Settings API - Ripster</title><link rel=stylesheet href=../../assets/stylesheets/main.618322db.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../stylesheets/extra.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#settings-api class=md-skip> Zum Inhalt </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Kopfzeile> <a href=../.. title=Ripster class="md-header__button md-logo" aria-label=Ripster data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 14a2 2 0 0 1-2-2c0-1.11.89-2 2-2s2 .89 2 2a2 2 0 0 1-2 2m0-10a8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8 8 8 0 0 0-8-8"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Ripster </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Settings API </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Dunkelmodus aktivieren" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Dunkelmodus aktivieren" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Hellmodus aktivieren" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Hellmodus aktivieren" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.Line truncated
</span><span id=__span-0-2><a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=w> </span><span class=nt>&quot;categories&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-0-3><a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-4><a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=w> </span><span class=nt>&quot;category&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Pfade&quot;</span><span class=p>,</span>
</span><span id=__span-0-5><a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=w> </span><span class=nt>&quot;settings&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-0-6><a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-7><a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=w> </span><span class=nt>&quot;key&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;raw_dir&quot;</span><span class=p>,</span>
</span><span id=__span-0-8><a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=w> </span><span class=nt>&quot;label&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Raw Ausgabeordner&quot;</span><span class=p>,</span>
</span><span id=__span-0-9><a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;path&quot;</span><span class=p>,</span>
</span><span id=__span-0-10><a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=w> </span><span class=nt>&quot;required&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-0-11><a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=w> </span><span class=nt>&quot;description&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=p>,</span>
</span><span id=__span-0-12><a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=w> </span><span class=nt>&quot;defaultValue&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;data/output/raw&quot;</span><span class=p>,</span>
</span><span id=__span-0-13><a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a><span class=w> </span><span class=nt>&quot;options&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span>
</span><span id=__span-0-14><a id=__codelineno-0-14 name=__codelineno-0-14 href=#__codelineno-0-14></a><span class=w> </span><span class=nt>&quot;validation&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;minLength&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-0-15><a id=__codelineno-0-15 name=__codelineno-0-15 href=#__codelineno-0-15></a><span class=w> </span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;data/output/raw&quot;</span><span class=p>,</span>
</span><span id=__span-0-16><a id=__codelineno-0-16 name=__codelineno-0-16 href=#__codelineno-0-16></a><span class=w> </span><span class=nt>&quot;orderIndex&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>100</span>
</span><span id=__span-0-17><a id=__codelineno-0-17 name=__codelineno-0-17 href=#__codelineno-0-17></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-18><a id=__codelineno-0-18 name=__codelineno-0-18 href=#__codelineno-0-18></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-0-19><a id=__codelineno-0-19 name=__codelineno-0-19 href=#__codelineno-0-19></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-0-20><a id=__codelineno-0-20 name=__codelineno-0-20 href=#__codelineno-0-20></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-0-21><a id=__codelineno-0-21 name=__codelineno-0-21 href=#__codelineno-0-21></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=put-apisettingskey>PUT /api/settings/:key<a class=headerlink href=#put-apisettingskey title="Permanent link">&para;</a></h2> <p>Aktualisiert eine einzelne Einstellung.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/storage/raw&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span>
</span><span id=__span-2-2><a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a><span class=w> </span><span class=nt>&quot;setting&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-2-3><a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=w> </span><span class=nt>&quot;key&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;raw_dir&quot;</span><span class=p>,</span>
</span><span id=__span-2-4><a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a><span class=w> </span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/storage/raw&quot;</span>
</span><span id=__span-2-5><a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-2-6><a id=__codelineno-2-6 name=__codelineno-2-6 href=#__codelineno-2-6></a><span class=w> </span><span class=nt>&quot;reviewRefresh&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-2-7><a id=__codelineno-2-7 name=__codelineno-2-7 href=#__codelineno-2-7></a><span class=w> </span><span class=nt>&quot;triggered&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-2-8><a id=__codelineno-2-8 name=__codelineno-2-8 href=#__codelineno-2-8></a><span class=w> </span><span class=nt>&quot;reason&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;not_ready&quot;</span>
</span><span id=__span-2-9><a id=__codelineno-2-9 name=__codelineno-2-9 href=#__codelineno-2-9></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-2-10><a id=__codelineno-2-10 name=__codelineno-2-10 href=#__codelineno-2-10></a><span class=p>}</span>
</span></code></pre></div> <p><code>reviewRefresh</code> ist <code>null</code> oder ein Objekt mit Status der optionalen Review-Neuberechnung.</p> <hr> <h2 id=put-apisettings>PUT /api/settings<a class=headerlink href=#put-apisettings title="Permanent link">&para;</a></h2> <p>Aktualisiert mehrere Einstellungen atomar.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=p>{</span>
</span><span id=__span-3-2><a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a><span class=w> </span><span class=nt>&quot;settings&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-3-3><a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a><span class=w> </span><span class=nt>&quot;raw_dir&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/storage/raw&quot;</span><span class=p>,</span>
</span><span id=__span-3-4><a id=__codelineno-3-4 name=__codelineno-3-4 href=#__codelineno-3-4></a><span class=w> </span><span class=nt>&quot;movie_dir&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/storage/movies&quot;</span><span class=p>,</span>
</span><span id=__span-3-5><a id=__codelineno-3-5 name=__codelineno-3-5 href=#__codelineno-3-5></a><span class=w> </span><span class=nt>&quot;handbrake_preset_bluray&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;H.264 MKV 1080p30&quot;</span>
</span><span id=__span-3-6><a id=__codelineno-3-6 name=__codelineno-3-6 href=#__codelineno-3-6></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-3-7><a id=__codelineno-3-7 name=__codelineno-3-7 href=#__codelineno-3-7></a><span class=p>}</span>
</span></code></pre></div> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=p>{</span>
</span><span id=__span-4-2><a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a><span class=w> </span><span class=nt>&quot;changes&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-4-3><a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;key&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;raw_dir&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/storage/raw&quot;</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-4-4><a id=__codelineno-4-4 name=__codelineno-4-4 href=#__codelineno-4-4></a><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;key&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;movie_dir&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/mnt/storage/movies&quot;</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-4-5><a id=__codelineno-4-5 name=__codelineno-4-5 href=#__codelineno-4-5></a><span class=w> </span><span class=p>],</span>
</span><span id=__span-4-6><a id=__codelineno-4-6 name=__codelineno-4-6 href=#__codelineno-4-6></a><span class=w> </span><span class=nt>&quot;reviewRefresh&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-4-7><a id=__codelineno-4-7 name=__codelineno-4-7 href=#__codelineno-4-7></a><span class=w> </span><span class=nt>&quot;triggered&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-4-8><a id=__codelineno-4-8 name=__codelineno-4-8 href=#__codelineno-4-8></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-4-9><a id=__codelineno-4-9 name=__codelineno-4-9 href=#__codelineno-4-9></a><span class=w> </span><span class=nt>&quot;relevantKeys&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;handbrake_preset_bluray&quot;</span><span class=p>]</span>
</span><span id=__span-4-10><a id=__codelineno-4-10 name=__codelineno-4-10 href=#__codelineno-4-10></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-4-11><a id=__codelineno-4-11 name=__codelineno-4-11 href=#__codelineno-4-11></a><span class=p>}</span>
</span></code></pre></div> <p>Bei Validierungsfehlern kommt <code>400</code> mit <code>error.details[]</code>.</p> <hr> <h2 id=get-apisettingshandbrake-presets>GET /api/settings/handbrake-presets<a class=headerlink href=#get-apisettingshandbrake-presets title="Permanent link">&para;</a></h2> <p>Liest Preset-Liste via <code>HandBrakeCLI -z</code> (mit Fallback auf konfigurierte Presets).</p> <p><strong>Response (Beispiel):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=p>{</span>
</span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=w> </span><span class=nt>&quot;source&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;handbrake-cli&quot;</span><span class=p>,</span>
</span><span id=__span-5-3><a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=w> </span><span class=nt>&quot;message&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-5-4><a id=__codelineno-5-4 name=__codelineno-5-4 href=#__codelineno-5-4></a><span class=w> </span><span class=nt>&quot;options&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-5-5><a id=__codelineno-5-5 name=__codelineno-5-5 href=#__codelineno-5-5></a><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;label&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;General/&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;__group__general&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;disabled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;category&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;General&quot;</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-5-6><a id=__codelineno-5-6 name=__codelineno-5-6 href=#__codelineno-5-6></a><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;label&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot; Fast 1080p30&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Fast 1080p30&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;category&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;General&quot;</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-5-7><a id=__codelineno-5-7 name=__codelineno-5-7 href=#__codelineno-5-7></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-5-8><a id=__codelineno-5-8 name=__codelineno-5-8 href=#__codelineno-5-8></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=post-apisettingspushovertest>POST /api/settings/pushover/test<a class=headerlink href=#post-apisettingspushovertest title="Permanent link">&para;</a></h2> <p>Sendet Testnachricht über aktuelle PushOver-Settings.</p> <p><strong>Request (optional):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a><span class=p>{</span>
</span><span id=__span-6-2><a id=__codelineno-6-2 name=__codelineno-6-2 href=#__codelineno-6-2></a><span class=w> </span><span class=nt>&quot;title&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Test&quot;</span><span class=p>,</span>
</span><span id=__span-6-3><a id=__codelineno-6-3 name=__codelineno-6-3 href=#__codelineno-6-3></a><span class=w> </span><span class=nt>&quot;message&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Ripster Test&quot;</span>
</span><span id=__span-6-4><a id=__codelineno-6-4 name=__codelineno-6-4 href=#__codelineno-6-4></a><span class=p>}</span>
</span></code></pre></div> <p><strong>Response:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a><span class=p>{</span>
</span><span id=__span-7-2><a id=__codelineno-7-2 name=__codelineno-7-2 href=#__codelineno-7-2></a><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-7-3><a id=__codelineno-7-3 name=__codelineno-7-3 href=#__codelineno-7-3></a><span class=w> </span><span class=nt>&quot;sent&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-7-4><a id=__codelineno-7-4 name=__codelineno-7-4 href=#__codelineno-7-4></a><span class=w> </span><span class=nt>&quot;eventKey&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;test&quot;</span><span class=p>,</span>
</span><span id=__span-7-5><a id=__codelineno-7-5 name=__codelineno-7-5 href=#__codelineno-7-5></a><span class=w> </span><span class=nt>&quot;requestId&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span>
</span><span id=__span-7-6><a id=__codelineno-7-6 name=__codelineno-7-6 href=#__codelineno-7-6></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-7-7><a id=__codelineno-7-7 name=__codelineno-7-7 href=#__codelineno-7-7></a><span class=p>}</span>
</span></code></pre></div> <p>Wenn PushOver deaktiviert ist oder Credentials fehlen, kommt i. d. R. ebenfalls <code>200</code> mit <code>sent: false</code> + <code>reason</code>.</p> <hr> <h2 id=skripte>Skripte<a class=headerlink href=#skripte title="Permanent link">&para;</a></h2> <p>Basis: <code>/api/settings/scripts</code></p> <h3 id=get-apisettingsscripts>GET /api/settings/scripts<a class=headerlink href=#get-apisettingsscripts title="Permanent link">&para;</a></h3> <div class="language-json highlight"><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;scripts&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;scriptBody&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;orderIndex&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;createdAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=w> </span><span class=p>}</span><span class=w> </span><span class=p>]</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <h3 id=post-apisettingsscripts>POST /api/settings/scripts<a class=headerlink href=#post-apisettingsscripts title="Permanent link">&para;</a></h3> <div class="language-json highlight"><pre><span></span><code><span id=__span-9-1><a id=__codelineno-9-1 name=__codelineno-9-1 href=#__codelineno-9-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Move&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;scriptBody&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;mv \&quot;$RIPSTER_OUTPUT_PATH\&quot; /mnt/movies/&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p>Response: <code>201</code> mit <code>{ "script": { ... } }</code></p> <h3 id=put-apisettingsscriptsid>PUT /api/settings/scripts/:id<a class=headerlink href=#put-apisettingsscriptsid title="Permanent link">&para;</a></h3> <p>Body wie <code>POST</code>, Response <code>{ "script": { ... } }</code>.</p> <h3 id=delete-apisettingsscriptsid>DELETE /api/settings/scripts/:id<a class=headerlink href=#delete-apisettingsscriptsid title="Permanent link">&para;</a></h3> <p>Response <code>{ "removed": { ... } }</code>.</p> <h3 id=post-apisettingsscriptsreorder>POST /api/settings/scripts/reorder<a class=headerlink href=#post-apisettingsscriptsreorder title="Permanent link">&para;</a></h3> <div class="language-json highlight"><pre><span></span><code><span id=__span-10-1><a id=__codelineno-10-1 name=__codelineno-10-1 href=#__codelineno-10-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;orderedScriptIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>3</span><span class=p>,</span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=mi>2</span><span class=p>]</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p>Response <code>{ "scripts": [ ... ] }</code>.</p> <h3 id=post-apisettingsscriptsidtest>POST /api/settings/scripts/:id/test<a class=headerlink href=#post-apisettingsscriptsidtest title="Permanent link">&para;</a></h3> <p>Führt Skript als Testlauf aus.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-11-1><a id=__codelineno-11-1 name=__codelineno-11-1 href=#__codelineno-11-1></a><span class=p>{</span>
</span><span id=__span-11-2><a id=__codelineno-11-2 name=__codelineno-11-2 href=#__codelineno-11-2></a><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-11-3><a id=__codelineno-11-3 name=__codelineno-11-3 href=#__codelineno-11-3></a><span class=w> </span><span class=nt>&quot;scriptId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-11-4><a id=__codelineno-11-4 name=__codelineno-11-4 href=#__codelineno-11-4></a><span class=w> </span><span class=nt>&quot;scriptName&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Move&quot;</span><span class=p>,</span>
</span><span id=__span-11-5><a id=__codelineno-11-5 name=__codelineno-11-5 href=#__codelineno-11-5></a><span class=w> </span><span class=nt>&quot;success&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-11-6><a id=__codelineno-11-6 name=__codelineno-11-6 href=#__codelineno-11-6></a><span class=w> </span><span class=nt>&quot;exitCode&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span>
</span><span id=__span-11-7><a id=__codelineno-11-7 name=__codelineno-11-7 href=#__codelineno-11-7></a><span class=w> </span><span class=nt>&quot;signal&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-11-8><a id=__codelineno-11-8 name=__codelineno-11-8 href=#__codelineno-11-8></a><span class=w> </span><span class=nt>&quot;timedOut&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-11-9><a id=__codelineno-11-9 name=__codelineno-11-9 href=#__codelineno-11-9></a><span class=w> </span><span class=nt>&quot;durationMs&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>120</span><span class=p>,</span>
</span><span id=__span-11-10><a id=__codelineno-11-10 name=__codelineno-11-10 href=#__codelineno-11-10></a><span class=w> </span><span class=nt>&quot;stdout&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=p>,</span>
</span><span id=__span-11-11><a id=__codelineno-11-11 name=__codelineno-11-11 href=#__codelineno-11-11></a><span class=w> </span><span class=nt>&quot;stderr&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=p>,</span>
</span><span id=__span-11-12><a id=__codelineno-11-12 name=__codelineno-11-12 href=#__codelineno-11-12></a><span class=w> </span><span class=nt>&quot;stdoutTruncated&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-11-13><a id=__codelineno-11-13 name=__codelineno-11-13 href=#__codelineno-11-13></a><span class=w> </span><span class=nt>&quot;stderrTruncated&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span>
</span><span id=__span-11-14><a id=__codelineno-11-14 name=__codelineno-11-14 href=#__codelineno-11-14></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-11-15><a id=__codelineno-11-15 name=__codelineno-11-15 href=#__codelineno-11-15></a><span class=p>}</span>
</span></code></pre></div> <h3 id=umgebungsvariablen-fur-skripte>Umgebungsvariablen für Skripte<a class=headerlink href=#umgebungsvariablen-fur-skripte title="Permanent link">&para;</a></h3> <p>Diese Variablen werden beim Ausführen gesetzt:</p> <ul> <li><code>RIPSTER_SCRIPT_RUN_AT</code></li> <li><code>RIPSTER_JOB_ID</code></li> <li><code>RIPSTER_JOB_TITLE</code></li> <li><code>RIPSTER_MODE</code></li> <li><code>RIPSTER_INPUT_PATH</code></li> <li><code>RIPSTER_OUTPUT_PATH</code></li> <li><code>RIPSTER_RAW_PATH</code></li> <li><code>RIPSTER_SCRIPT_ID</code></li> <li><code>RIPSTER_SCRIPT_NAME</code></li> <li><code>RIPSTER_SCRIPT_SOURCE</code></li> </ul> <hr> <h2 id=skript-ketten>Skript-Ketten<a class=headerlink href=#skript-ketten title="Permanent link">&para;</a></h2> <p>Basis: <code>/api/settings/script-chains</code></p> <p>Eine Kette hat Schritte vom Typ:</p> <ul> <li><code>script</code> (<code>scriptId</code> erforderlich)</li> <li><code>wait</code> (<code>waitSeconds</code> 1..3600)</li> </ul> <h3 id=get-apisettingsscript-chains>GET /api/settings/script-chains<a class=headerlink href=#get-apisettingsscript-chains title="Permanent link">&para;</a></h3> <p>Response <code>{ "chains": [ ... ] }</code> (inkl. <code>steps[]</code>).</p> <h3 id=get-apisettingsscript-chainsid>GET /api/settings/script-chains/:id<a class=headerlink href=#get-apisettingsscript-chainsid title="Permanent link">&para;</a></h3> <p>Response <code>{ "chain": { ... } }</code>.</p> <h3 id=post-apisettingsscript-chains>POST /api/settings/script-chains<a class=headerlink href=#post-apisettingsscript-chains title="Permanent link">&para;</a></h3> <div class="language-json highlight"><pre><span></span><code><span id=__span-12-1><a id=__codelineno-12-1 name=__codelineno-12-1 href=#__codelineno-12-1></a><span class=p>{</span>
</span><span id=__span-12-2><a id=__codelineno-12-2 name=__codelineno-12-2 href=#__codelineno-12-2></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;After Encode&quot;</span><span class=p>,</span>
</span><span id=__span-12-3><a id=__codelineno-12-3 name=__codelineno-12-3 href=#__codelineno-12-3></a><span class=w> </span><span class=nt>&quot;steps&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-12-4><a id=__codelineno-12-4 name=__codelineno-12-4 href=#__codelineno-12-4></a><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;stepType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;script&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;scriptId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-12-5><a id=__codelineno-12-5 name=__codelineno-12-5 href=#__codelineno-12-5></a><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;stepType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;wait&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;waitSeconds&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>15</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-12-6><a id=__codelineno-12-6 name=__codelineno-12-6 href=#__codelineno-12-6></a><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;stepType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;script&quot;</span><span class=p>,</span><span class=w> </span><span class=nt>&quot;scriptId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-12-7><a id=__codelineno-12-7 name=__codelineno-12-7 href=#__codelineno-12-7></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-12-8><a id=__codelineno-12-8 name=__codelineno-12-8 href=#__codelineno-12-8></a><span class=p>}</span>
</span></code></pre></div> <p>Response: <code>201</code> mit <code>{ "chain": { ... } }</code></p> <h3 id=put-apisettingsscript-chainsid>PUT /api/settings/script-chains/:id<a class=headerlink href=#put-apisettingsscript-chainsid title="Permanent link">&para;</a></h3> <p>Body wie <code>POST</code>, Response <code>{ "chain": { ... } }</code>.</p> <h3 id=delete-apisettingsscript-chainsid>DELETE /api/settings/script-chains/:id<a class=headerlink href=#delete-apisettingsscript-chainsid title="Permanent link">&para;</a></h3> <p>Response <code>{ "removed": { ... } }</code>.</p> <h3 id=post-apisettingsscript-chainsreorder>POST /api/settings/script-chains/reorder<a class=headerlink href=#post-apisettingsscript-chainsreorder title="Permanent link">&para;</a></h3> <div class="language-json highlight"><pre><span></span><code><span id=__span-13-1><a id=__codelineno-13-1 name=__codelineno-13-1 href=#__codelineno-13-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;orderedChainIds&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=mi>2</span><span class=p>,</span><span class=w> </span><span class=mi>1</span><span class=p>,</span><span class=w> </span><span class=mi>3</span><span class=p>]</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p>Response <code>{ "chains": [ ... ] }</code>.</p> <h3 id=post-apisettingsscript-chainsidtest>POST /api/settings/script-chains/:id/test<a class=headerlink href=#post-apisettingsscript-chainsidtest title="Permanent link">&para;</a></h3> <p>Response:</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-14-1><a id=__codelineno-14-1 name=__codelineno-14-1 href=#__codelineno-14-1></a><span class=p>{</span>
</span><span id=__span-14-2><a id=__codelineno-14-2 name=__codelineno-14-2 href=#__codelineno-14-2></a><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-14-3><a id=__codelineno-14-3 name=__codelineno-14-3 href=#__codelineno-14-3></a><span class=w> </span><span class=nt>&quot;chainId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span>
</span><span id=__span-14-4><a id=__codelineno-14-4 name=__codelineno-14-4 href=#__codelineno-14-4></a><span class=w> </span><span class=nt>&quot;chainName&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;After Encode&quot;</span><span class=p>,</span>
</span><span id=__span-14-5><a id=__codelineno-14-5 name=__codelineno-14-5 href=#__codelineno-14-5></a><span class=w> </span><span class=nt>&quot;steps&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-14-6><a id=__codelineno-14-6 name=__codelineno-14-6 href=#__codelineno-14-6></a><span class=w> </span><span class=nt>&quot;succeeded&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-14-7><a id=__codelineno-14-7 name=__codelineno-14-7 href=#__codelineno-14-7></a><span class=w> </span><span class=nt>&quot;failed&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span>
</span><span id=__span-14-8><a id=__codelineno-14-8 name=__codelineno-14-8 href=#__codelineno-14-8></a><span class=w> </span><span class=nt>&quot;aborted&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-14-9><a id=__codelineno-14-9 name=__codelineno-14-9 href=#__codelineno-14-9></a><span class=w> </span><span class=nt>&quot;results&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[]</span>
</span><span id=__span-14-10><a id=__codelineno-14-10 name=__codelineno-14-10 href=#__codelineno-14-10></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-14-11><a id=__codelineno-14-11 name=__codelineno-14-11 href=#__codelineno-14-11></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=user-presets>User-Presets<a class=headerlink href=#user-presets title="Permanent link">&para;</a></h2> <p>Basis: <code>/api/settings/user-presets</code></p> <h3 id=get-apisettingsuser-presets>GET /api/settings/user-presets<a class=headerlink href=#get-apisettingsuser-presets title="Permanent link">&para;</a></h3> <p>Optionaler Query-Parameter: <code>media_type=bluray|dvd|other|all</code></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-15-1><a id=__codelineno-15-1 name=__codelineno-15-1 href=#__codelineno-15-1></a><span class=p>{</span>
</span><span id=__span-15-2><a id=__codelineno-15-2 name=__codelineno-15-2 href=#__codelineno-15-2></a><span class=w> </span><span class=nt>&quot;presets&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-15-3><a id=__codelineno-15-3 name=__codelineno-15-3 href=#__codelineno-15-3></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-15-4><a id=__codelineno-15-4 name=__codelineno-15-4 href=#__codelineno-15-4></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-15-5><a id=__codelineno-15-5 name=__codelineno-15-5 href=#__codelineno-15-5></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Blu-ray HQ&quot;</span><span class=p>,</span>
</span><span id=__span-15-6><a id=__codelineno-15-6 name=__codelineno-15-6 href=#__codelineno-15-6></a><span class=w> </span><span class=nt>&quot;mediaType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;bluray&quot;</span><span class=p>,</span>
</span><span id=__span-15-7><a id=__codelineno-15-7 name=__codelineno-15-7 href=#__codelineno-15-7></a><span class=w> </span><span class=nt>&quot;handbrakePreset&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;H.264 MKV 1080p30&quot;</span><span class=p>,</span>
</span><span id=__span-15-8><a id=__codelineno-15-8 name=__codelineno-15-8 href=#__codelineno-15-8></a><span class=w> </span><span class=nt>&quot;extraArgs&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;--encoder-preset slow&quot;</span><span class=p>,</span>
</span><span id=__span-15-9><a id=__codelineno-15-9 name=__codelineno-15-9 href=#__codelineno-15-9></a><span class=w> </span><span class=nt>&quot;description&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=p>,</span>
</span><span id=__span-15-10><a id=__codelineno-15-10 name=__codelineno-15-10 href=#__codelineno-15-10></a><span class=w> </span><span class=nt>&quot;createdAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span><span class=p>,</span>
</span><span id=__span-15-11><a id=__codelineno-15-11 name=__codelineno-15-11 href=#__codelineno-15-11></a><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;...&quot;</span>
</span><span id=__span-15-12><a id=__codelineno-15-12 name=__codelineno-15-12 href=#__codelineno-15-12></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-15-13><a id=__codelineno-15-13 name=__codelineno-15-13 href=#__codelineno-15-13></a><span class=w> </span><span class=p>]</span>
</span><span id=__span-15-14><a id=__codelineno-15-14 name=__codelineno-15-14 href=#__codelineno-15-14></a><span class=p>}</span>
</span></code></pre></div> <h3 id=post-apisettingsuser-presets>POST /api/settings/user-presets<a class=headerlink href=#post-apisettingsuser-presets title="Permanent link">&para;</a></h3> <div class="language-json highlight"><pre><span></span><code><span id=__span-16-1><a id=__codelineno-16-1 name=__codelineno-16-1 href=#__codelineno-16-1></a><span class=p>{</span>
</span><span id=__span-16-2><a id=__codelineno-16-2 name=__codelineno-16-2 href=#__codelineno-16-2></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Blu-ray HQ&quot;</span><span class=p>,</span>
</span><span id=__span-16-3><a id=__codelineno-16-3 name=__codelineno-16-3 href=#__codelineno-16-3></a><span class=w> </span><span class=nt>&quot;mediaType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;bluray&quot;</span><span class=p>,</span>
</span><span id=__span-16-4><a id=__codelineno-16-4 name=__codelineno-16-4 href=#__codelineno-16-4></a><span class=w> </span><span class=nt>&quot;handbrakePreset&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;H.264 MKV 1080p30&quot;</span><span class=p>,</span>
</span><span id=__span-16-5><a id=__codelineno-16-5 name=__codelineno-16-5 href=#__codelineno-16-5></a><span class=w> </span><span class=nt>&quot;extraArgs&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;--encoder-preset slow&quot;</span><span class=p>,</span>
</span><span id=__span-16-6><a id=__codelineno-16-6 name=__codelineno-16-6 href=#__codelineno-16-6></a><span class=w> </span><span class=nt>&quot;description&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;optional&quot;</span>
</span><span id=__span-16-7><a id=__codelineno-16-7 name=__codelineno-16-7 href=#__codelineno-16-7></a><span class=p>}</span>
</span></code></pre></div> <p>Response: <code>201</code> mit <code>{ "preset": { ... } }</code></p> <h3 id=put-apisettingsuser-presetsid>PUT /api/settings/user-presets/:id<a class=headerlink href=#put-apisettingsuser-presetsid title="Permanent link">&para;</a></h3> <p>Body mit beliebigen Feldern aus <code>POST</code>, Response <code>{ "preset": { ... } }</code>.</p> <h3 id=delete-apisettingsuser-presetsid>DELETE /api/settings/user-presets/:id<a class=headerlink href=#delete-apisettingsuser-presetsid title="Permanent link">&para;</a></h3> <p>Response <code>{ "removed": { ... } }</code>.</p> <hr> <h2 id=weitere-endpunkte>Weitere Endpunkte<a class=headerlink href=#weitere-endpunkte title="Permanent link">&para;</a></h2> <h3 id=get-apisettingseffective-paths>GET /api/settings/effective-paths<a class=headerlink href=#get-apisettingseffective-paths title="Permanent link">&para;</a></h3> <p>Liefert aufgelöste, effektiv genutzte Pfade aus den Settings (für UI- und Diagnosezwecke).</p> <h3 id=post-apisettingscoverartrecover>POST /api/settings/coverart/recover<a class=headerlink href=#post-apisettingscoverartrecover title="Permanent link">&para;</a></h3> <p>Startet eine manuelle Coverart-Recovery.</p> <p><strong>Response (Beispiel):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-17-1><a id=__codelineno-17-1 name=__codelineno-17-1 href=#__codelineno-17-1></a><span class=p>{</span>
</span><span id=__span-17-2><a id=__codelineno-17-2 name=__codelineno-17-2 href=#__codelineno-17-2></a><span class=w> </span><span class=nt>&quot;result&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;started&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=w> </span><span class=p>},</span>
</span><span id=__span-17-3><a id=__codelineno-17-3 name=__codelineno-17-3 href=#__codelineno-17-3></a><span class=w> </span><span class=nt>&quot;scheduler&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=nt>&quot;enabled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=w> </span><span class=p>}</span>
</span><span id=__span-17-4><a id=__codelineno-17-4 name=__codelineno-17-4 href=#__codelineno-17-4></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=activation-bytes-aax>Activation Bytes (AAX)<a class=headerlink href=#activation-bytes-aax title="Permanent link">&para;</a></h2> <h3 id=get-apisettingsactivation-bytes>GET /api/settings/activation-bytes<a class=headerlink href=#get-apisettingsactivation-bytes title="Permanent link">&para;</a></h3> <p>Liest gecachte AAX-Activation-Bytes.</p> <h3 id=post-apisettingsactivation-bytes>POST /api/settings/activation-bytes<a class=headerlink href=#post-apisettingsactivation-bytes title="Permanent link">&para;</a></h3> <p>Speichert Activation-Bytes.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-18-1><a id=__codelineno-18-1 name=__codelineno-18-1 href=#__codelineno-18-1></a><span class=p>{</span>
</span><span id=__span-18-2><a id=__codelineno-18-2 name=__codelineno-18-2 href=#__codelineno-18-2></a><span class=w> </span><span class=nt>&quot;checksum&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;abc123...&quot;</span><span class=p>,</span>
</span><span id=__span-18-3><a id=__codelineno-18-3 name=__codelineno-18-3 href=#__codelineno-18-3></a><span class=w> </span><span class=nt>&quot;activationBytes&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;1a2b3c4d&quot;</span>
</span><span id=__span-18-4><a id=__codelineno-18-4 name=__codelineno-18-4 href=#__codelineno-18-4></a><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=laufwerke>Laufwerke<a class=headerlink href=#laufwerke title="Permanent link">&para;</a></h2> <h3 id=get-apisettingsdrives>GET /api/settings/drives<a class=headerlink href=#get-apisettingsdrives title="Permanent link">&para;</a></h3> <p>Liefert erkannte optische Laufwerke (<code>/dev/...</code>) inkl. MakeMKV-Disc-Index.</p> <h3 id=post-apisettingsdrivesforce-unlock>POST /api/settings/drives/force-unlock<a class=headerlink href=#post-apisettingsdrivesforce-unlock title="Permanent link">&para;</a></h3> <p>Erzwingt Entsperren aktiver Laufwerkslocks.</p> <p>Hinweis: Expertenmodus (<code>ui_expert_mode</code>) ist erforderlich, sonst <code>403</code>.</p> <p><strong>Request (ein Laufwerk):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-19-1><a id=__codelineno-19-1 name=__codelineno-19-1 href=#__codelineno-19-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;devicePath&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/dev/sr0&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <p><strong>Request (alle):</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-20-1><a id=__codelineno-20-1 name=__codelineno-20-1 href=#__codelineno-20-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;all&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> <hr> <h2 id=ui-preferences>UI Preferences<a class=headerlink href=#ui-preferences title="Permanent link">&para;</a></h2> <h3 id=get-apisettingsprefskey>GET /api/settings/prefs/:key<a class=headerlink href=#get-apisettingsprefskey title="Permanent link">&para;</a></h3> <p>Liest einen persistierten UI-Preference-Wert.</p> <h3 id=put-apisettingsprefskey>PUT /api/settings/prefs/:key<a class=headerlink href=#put-apisettingsprefskey title="Permanent link">&para;</a></h3> <p>Speichert einen persistierten UI-Preference-Wert.</p> <p><strong>Request:</strong></p> <div class="language-json highlight"><pre><span></span><code><span id=__span-21-1><a id=__codelineno-21-1 name=__codelineno-21-1 href=#__codelineno-21-1></a><span class=p>{</span><span class=w> </span><span class=nt>&quot;value&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;{\&quot;columns\&quot;:[\&quot;id\&quot;,\&quot;status\&quot;]}&quot;</span><span class=w> </span><span class=p>}</span>
</span></code></pre></div> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Zurück zum Seitenanfang </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/YOUR_GITHUB_USERNAME/ripster target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy", "content.code.annotate", "content.tabs.link", "toc.integrate"], "search": "../../assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}, "version": {"provider": "mike"}}</script> <script src=../../assets/javascripts/bundle.e71a0d61.min.js></script> </body> </html>
+151
View File
@@ -0,0 +1,151 @@
<!doctype html><html lang=de class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Benutzerhandbuch für den Betrieb von Ripster mit technischem Anhang"><meta name=author content=Michael><link href=https://mboehmlaender.github.io/ripster/api/websocket/ rel=canonical><link href=../runtime-activities/ rel=prev><link href=../../architecture/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.7.0"><title>WebSocket Events - Ripster</title><link rel=stylesheet href=../../assets/stylesheets/main.618322db.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../stylesheets/extra.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#websocket-events class=md-skip> Zum Inhalt </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Kopfzeile> <a href=../.. title=Ripster class="md-header__button md-logo" aria-label=Ripster data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 14a2 2 0 0 1-2-2c0-1.11.89-2 2-2s2 .89 2 2a2 2 0 0 1-2 2m0-10a8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8 8 8 0 0 0-8-8"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Ripster </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> WebSocket Events </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Dunkelmodus aktivieren" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Dunkelmodus aktivieren" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Hellmodus aktivieren" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Hellmodus aktivieren" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1Line truncated
</span><span id=__span-0-2><a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>
</span><span id=__span-0-3><a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=nx>ws</span><span class=p>.</span><span class=nx>onmessage</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>(</span><span class=nx>event</span><span class=p>)</span><span class=w> </span><span class=p>=&gt;</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-0-4><a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=w> </span><span class=kd>const</span><span class=w> </span><span class=nx>msg</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nb>JSON</span><span class=p>.</span><span class=nx>parse</span><span class=p>(</span><span class=nx>event</span><span class=p>.</span><span class=nx>data</span><span class=p>);</span>
</span><span id=__span-0-5><a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=w> </span><span class=nx>console</span><span class=p>.</span><span class=nx>log</span><span class=p>(</span><span class=nx>msg</span><span class=p>.</span><span class=nx>type</span><span class=p>,</span><span class=w> </span><span class=nx>msg</span><span class=p>.</span><span class=nx>payload</span><span class=p>);</span>
</span><span id=__span-0-6><a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=p>};</span>
</span></code></pre></div> <hr> <h2 id=nachrichtenformat>Nachrichtenformat<a class=headerlink href=#nachrichtenformat title="Permanent link">&para;</a></h2> <p>Die meisten Broadcasts haben dieses Schema:</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span>
</span><span id=__span-1-2><a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;EVENT_TYPE&quot;</span><span class=p>,</span>
</span><span id=__span-1-3><a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-1-4><a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=w> </span><span class=nt>&quot;timestamp&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T09:00:00.000Z&quot;</span>
</span><span id=__span-1-5><a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=p>}</span>
</span></code></pre></div> <p>Ausnahme: <code>WS_CONNECTED</code> beim Verbindungsaufbau enthält kein <code>timestamp</code>.</p> <hr> <h2 id=event-typen>Event-Typen<a class=headerlink href=#event-typen title="Permanent link">&para;</a></h2> <h3 id=ws_connected>WS_CONNECTED<a class=headerlink href=#ws_connected title="Permanent link">&para;</a></h3> <p>Sofort nach erfolgreicher Verbindung.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=p>{</span>
</span><span id=__span-2-2><a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;WS_CONNECTED&quot;</span><span class=p>,</span>
</span><span id=__span-2-3><a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-2-4><a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a><span class=w> </span><span class=nt>&quot;connectedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T09:00:00.000Z&quot;</span>
</span><span id=__span-2-5><a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-2-6><a id=__codelineno-2-6 name=__codelineno-2-6 href=#__codelineno-2-6></a><span class=p>}</span>
</span></code></pre></div> <h3 id=pipeline_state_changed>PIPELINE_STATE_CHANGED<a class=headerlink href=#pipeline_state_changed title="Permanent link">&para;</a></h3> <p>Neuer Pipeline-Snapshot.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=p>{</span>
</span><span id=__span-3-2><a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;PIPELINE_STATE_CHANGED&quot;</span><span class=p>,</span>
</span><span id=__span-3-3><a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-3-4><a id=__codelineno-3-4 name=__codelineno-3-4 href=#__codelineno-3-4></a><span class=w> </span><span class=nt>&quot;state&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ENCODING&quot;</span><span class=p>,</span>
</span><span id=__span-3-5><a id=__codelineno-3-5 name=__codelineno-3-5 href=#__codelineno-3-5></a><span class=w> </span><span class=nt>&quot;activeJobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-3-6><a id=__codelineno-3-6 name=__codelineno-3-6 href=#__codelineno-3-6></a><span class=w> </span><span class=nt>&quot;progress&quot;</span><span class=p>:</span><span class=w> </span><span class=mf>62.5</span><span class=p>,</span>
</span><span id=__span-3-7><a id=__codelineno-3-7 name=__codelineno-3-7 href=#__codelineno-3-7></a><span class=w> </span><span class=nt>&quot;eta&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;00:12:34&quot;</span><span class=p>,</span>
</span><span id=__span-3-8><a id=__codelineno-3-8 name=__codelineno-3-8 href=#__codelineno-3-8></a><span class=w> </span><span class=nt>&quot;statusText&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ENCODING 62.50%&quot;</span><span class=p>,</span>
</span><span id=__span-3-9><a id=__codelineno-3-9 name=__codelineno-3-9 href=#__codelineno-3-9></a><span class=w> </span><span class=nt>&quot;context&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-3-10><a id=__codelineno-3-10 name=__codelineno-3-10 href=#__codelineno-3-10></a><span class=w> </span><span class=nt>&quot;jobProgress&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-3-11><a id=__codelineno-3-11 name=__codelineno-3-11 href=#__codelineno-3-11></a><span class=w> </span><span class=nt>&quot;42&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-3-12><a id=__codelineno-3-12 name=__codelineno-3-12 href=#__codelineno-3-12></a><span class=w> </span><span class=nt>&quot;state&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ENCODING&quot;</span><span class=p>,</span>
</span><span id=__span-3-13><a id=__codelineno-3-13 name=__codelineno-3-13 href=#__codelineno-3-13></a><span class=w> </span><span class=nt>&quot;progress&quot;</span><span class=p>:</span><span class=w> </span><span class=mf>62.5</span><span class=p>,</span>
</span><span id=__span-3-14><a id=__codelineno-3-14 name=__codelineno-3-14 href=#__codelineno-3-14></a><span class=w> </span><span class=nt>&quot;eta&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;00:12:34&quot;</span><span class=p>,</span>
</span><span id=__span-3-15><a id=__codelineno-3-15 name=__codelineno-3-15 href=#__codelineno-3-15></a><span class=w> </span><span class=nt>&quot;statusText&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ENCODING 62.50%&quot;</span>
</span><span id=__span-3-16><a id=__codelineno-3-16 name=__codelineno-3-16 href=#__codelineno-3-16></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-3-17><a id=__codelineno-3-17 name=__codelineno-3-17 href=#__codelineno-3-17></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-3-18><a id=__codelineno-3-18 name=__codelineno-3-18 href=#__codelineno-3-18></a><span class=w> </span><span class=nt>&quot;queue&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-3-19><a id=__codelineno-3-19 name=__codelineno-3-19 href=#__codelineno-3-19></a><span class=w> </span><span class=nt>&quot;maxParallelJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-3-20><a id=__codelineno-3-20 name=__codelineno-3-20 href=#__codelineno-3-20></a><span class=w> </span><span class=nt>&quot;runningCount&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-3-21><a id=__codelineno-3-21 name=__codelineno-3-21 href=#__codelineno-3-21></a><span class=w> </span><span class=nt>&quot;queuedCount&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span>
</span><span id=__span-3-22><a id=__codelineno-3-22 name=__codelineno-3-22 href=#__codelineno-3-22></a><span class=w> </span><span class=nt>&quot;runningJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span>
</span><span id=__span-3-23><a id=__codelineno-3-23 name=__codelineno-3-23 href=#__codelineno-3-23></a><span class=w> </span><span class=nt>&quot;queuedJobs&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[]</span>
</span><span id=__span-3-24><a id=__codelineno-3-24 name=__codelineno-3-24 href=#__codelineno-3-24></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-3-25><a id=__codelineno-3-25 name=__codelineno-3-25 href=#__codelineno-3-25></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-3-26><a id=__codelineno-3-26 name=__codelineno-3-26 href=#__codelineno-3-26></a><span class=p>}</span>
</span></code></pre></div> <h3 id=pipeline_progress>PIPELINE_PROGRESS<a class=headerlink href=#pipeline_progress title="Permanent link">&para;</a></h3> <p>Laufende Fortschrittsupdates.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=p>{</span>
</span><span id=__span-4-2><a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;PIPELINE_PROGRESS&quot;</span><span class=p>,</span>
</span><span id=__span-4-3><a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-4-4><a id=__codelineno-4-4 name=__codelineno-4-4 href=#__codelineno-4-4></a><span class=w> </span><span class=nt>&quot;state&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ENCODING&quot;</span><span class=p>,</span>
</span><span id=__span-4-5><a id=__codelineno-4-5 name=__codelineno-4-5 href=#__codelineno-4-5></a><span class=w> </span><span class=nt>&quot;activeJobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-4-6><a id=__codelineno-4-6 name=__codelineno-4-6 href=#__codelineno-4-6></a><span class=w> </span><span class=nt>&quot;progress&quot;</span><span class=p>:</span><span class=w> </span><span class=mf>62.5</span><span class=p>,</span>
</span><span id=__span-4-7><a id=__codelineno-4-7 name=__codelineno-4-7 href=#__codelineno-4-7></a><span class=w> </span><span class=nt>&quot;eta&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;00:12:34&quot;</span><span class=p>,</span>
</span><span id=__span-4-8><a id=__codelineno-4-8 name=__codelineno-4-8 href=#__codelineno-4-8></a><span class=w> </span><span class=nt>&quot;statusText&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ENCODING 62.50%&quot;</span>
</span><span id=__span-4-9><a id=__codelineno-4-9 name=__codelineno-4-9 href=#__codelineno-4-9></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-4-10><a id=__codelineno-4-10 name=__codelineno-4-10 href=#__codelineno-4-10></a><span class=p>}</span>
</span></code></pre></div> <h3 id=pipeline_queue_changed>PIPELINE_QUEUE_CHANGED<a class=headerlink href=#pipeline_queue_changed title="Permanent link">&para;</a></h3> <p>Queue-Snapshot aktualisiert.</p> <h3 id=disc_detected-disc_removed>DISC_DETECTED / DISC_REMOVED<a class=headerlink href=#disc_detected-disc_removed title="Permanent link">&para;</a></h3> <p>Disc-Insertion/-Removal.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=p>{</span>
</span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;DISC_DETECTED&quot;</span><span class=p>,</span>
</span><span id=__span-5-3><a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-5-4><a id=__codelineno-5-4 name=__codelineno-5-4 href=#__codelineno-5-4></a><span class=w> </span><span class=nt>&quot;device&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-5-5><a id=__codelineno-5-5 name=__codelineno-5-5 href=#__codelineno-5-5></a><span class=w> </span><span class=nt>&quot;path&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;/dev/sr0&quot;</span><span class=p>,</span>
</span><span id=__span-5-6><a id=__codelineno-5-6 name=__codelineno-5-6 href=#__codelineno-5-6></a><span class=w> </span><span class=nt>&quot;discLabel&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;INCEPTION&quot;</span><span class=p>,</span>
</span><span id=__span-5-7><a id=__codelineno-5-7 name=__codelineno-5-7 href=#__codelineno-5-7></a><span class=w> </span><span class=nt>&quot;model&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ASUS BW-16D1HT&quot;</span><span class=p>,</span>
</span><span id=__span-5-8><a id=__codelineno-5-8 name=__codelineno-5-8 href=#__codelineno-5-8></a><span class=w> </span><span class=nt>&quot;fstype&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;udf&quot;</span><span class=p>,</span>
</span><span id=__span-5-9><a id=__codelineno-5-9 name=__codelineno-5-9 href=#__codelineno-5-9></a><span class=w> </span><span class=nt>&quot;mountpoint&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-5-10><a id=__codelineno-5-10 name=__codelineno-5-10 href=#__codelineno-5-10></a><span class=w> </span><span class=nt>&quot;mediaProfile&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;bluray&quot;</span>
</span><span id=__span-5-11><a id=__codelineno-5-11 name=__codelineno-5-11 href=#__codelineno-5-11></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-5-12><a id=__codelineno-5-12 name=__codelineno-5-12 href=#__codelineno-5-12></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-5-13><a id=__codelineno-5-13 name=__codelineno-5-13 href=#__codelineno-5-13></a><span class=p>}</span>
</span></code></pre></div> <p><code>mediaProfile</code>: <code>bluray</code> | <code>dvd</code> | <code>other</code> | <code>null</code></p> <h3 id=hardware_monitor_update>HARDWARE_MONITOR_UPDATE<a class=headerlink href=#hardware_monitor_update title="Permanent link">&para;</a></h3> <p>Snapshot aus Hardware-Monitoring.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a><span class=p>{</span>
</span><span id=__span-6-2><a id=__codelineno-6-2 name=__codelineno-6-2 href=#__codelineno-6-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;HARDWARE_MONITOR_UPDATE&quot;</span><span class=p>,</span>
</span><span id=__span-6-3><a id=__codelineno-6-3 name=__codelineno-6-3 href=#__codelineno-6-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-6-4><a id=__codelineno-6-4 name=__codelineno-6-4 href=#__codelineno-6-4></a><span class=w> </span><span class=nt>&quot;enabled&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-6-5><a id=__codelineno-6-5 name=__codelineno-6-5 href=#__codelineno-6-5></a><span class=w> </span><span class=nt>&quot;intervalMs&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>5000</span><span class=p>,</span>
</span><span id=__span-6-6><a id=__codelineno-6-6 name=__codelineno-6-6 href=#__codelineno-6-6></a><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T09:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-6-7><a id=__codelineno-6-7 name=__codelineno-6-7 href=#__codelineno-6-7></a><span class=w> </span><span class=nt>&quot;sample&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-6-8><a id=__codelineno-6-8 name=__codelineno-6-8 href=#__codelineno-6-8></a><span class=w> </span><span class=nt>&quot;cpu&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-6-9><a id=__codelineno-6-9 name=__codelineno-6-9 href=#__codelineno-6-9></a><span class=w> </span><span class=nt>&quot;memory&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-6-10><a id=__codelineno-6-10 name=__codelineno-6-10 href=#__codelineno-6-10></a><span class=w> </span><span class=nt>&quot;gpu&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{},</span>
</span><span id=__span-6-11><a id=__codelineno-6-11 name=__codelineno-6-11 href=#__codelineno-6-11></a><span class=w> </span><span class=nt>&quot;storage&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{}</span>
</span><span id=__span-6-12><a id=__codelineno-6-12 name=__codelineno-6-12 href=#__codelineno-6-12></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-6-13><a id=__codelineno-6-13 name=__codelineno-6-13 href=#__codelineno-6-13></a><span class=w> </span><span class=nt>&quot;error&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-6-14><a id=__codelineno-6-14 name=__codelineno-6-14 href=#__codelineno-6-14></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-6-15><a id=__codelineno-6-15 name=__codelineno-6-15 href=#__codelineno-6-15></a><span class=p>}</span>
</span></code></pre></div> <h3 id=pipeline_error>PIPELINE_ERROR<a class=headerlink href=#pipeline_error title="Permanent link">&para;</a></h3> <p>Fehler bei Disc-Event-Verarbeitung in Pipeline.</p> <h3 id=disk_detection_error>DISK_DETECTION_ERROR<a class=headerlink href=#disk_detection_error title="Permanent link">&para;</a></h3> <p>Fehler in Laufwerkserkennung.</p> <h3 id=settings_updated>SETTINGS_UPDATED<a class=headerlink href=#settings_updated title="Permanent link">&para;</a></h3> <p>Einzelnes Setting wurde gespeichert.</p> <h3 id=settings_bulk_updated>SETTINGS_BULK_UPDATED<a class=headerlink href=#settings_bulk_updated title="Permanent link">&para;</a></h3> <p>Bulk-Settings gespeichert.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a><span class=p>{</span>
</span><span id=__span-7-2><a id=__codelineno-7-2 name=__codelineno-7-2 href=#__codelineno-7-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;SETTINGS_BULK_UPDATED&quot;</span><span class=p>,</span>
</span><span id=__span-7-3><a id=__codelineno-7-3 name=__codelineno-7-3 href=#__codelineno-7-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-7-4><a id=__codelineno-7-4 name=__codelineno-7-4 href=#__codelineno-7-4></a><span class=w> </span><span class=nt>&quot;count&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-7-5><a id=__codelineno-7-5 name=__codelineno-7-5 href=#__codelineno-7-5></a><span class=w> </span><span class=nt>&quot;keys&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span><span class=s2>&quot;raw_dir&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;movie_dir&quot;</span><span class=p>,</span><span class=w> </span><span class=s2>&quot;handbrake_preset_bluray&quot;</span><span class=p>]</span>
</span><span id=__span-7-6><a id=__codelineno-7-6 name=__codelineno-7-6 href=#__codelineno-7-6></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-7-7><a id=__codelineno-7-7 name=__codelineno-7-7 href=#__codelineno-7-7></a><span class=p>}</span>
</span></code></pre></div> <h3 id=settings_scripts_updated>SETTINGS_SCRIPTS_UPDATED<a class=headerlink href=#settings_scripts_updated title="Permanent link">&para;</a></h3> <p>Skript geändert (<code>created|updated|deleted|reordered</code>).</p> <h3 id=settings_script_chains_updated>SETTINGS_SCRIPT_CHAINS_UPDATED<a class=headerlink href=#settings_script_chains_updated title="Permanent link">&para;</a></h3> <p>Skript-Kette geändert (<code>created|updated|deleted|reordered</code>).</p> <h3 id=user_presets_updated>USER_PRESETS_UPDATED<a class=headerlink href=#user_presets_updated title="Permanent link">&para;</a></h3> <p>User-Preset geändert (<code>created|updated|deleted</code>).</p> <h3 id=cron_jobs_updated>CRON_JOBS_UPDATED<a class=headerlink href=#cron_jobs_updated title="Permanent link">&para;</a></h3> <p>Cron-Config geändert (<code>created|updated|deleted</code>).</p> <h3 id=cron_job_updated>CRON_JOB_UPDATED<a class=headerlink href=#cron_job_updated title="Permanent link">&para;</a></h3> <p>Laufzeitstatus eines Cron-Jobs geändert.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a><span class=p>{</span>
</span><span id=__span-8-2><a id=__codelineno-8-2 name=__codelineno-8-2 href=#__codelineno-8-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;CRON_JOB_UPDATED&quot;</span><span class=p>,</span>
</span><span id=__span-8-3><a id=__codelineno-8-3 name=__codelineno-8-3 href=#__codelineno-8-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-8-4><a id=__codelineno-8-4 name=__codelineno-8-4 href=#__codelineno-8-4></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-8-5><a id=__codelineno-8-5 name=__codelineno-8-5 href=#__codelineno-8-5></a><span class=w> </span><span class=nt>&quot;lastRunStatus&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;running&quot;</span><span class=p>,</span>
</span><span id=__span-8-6><a id=__codelineno-8-6 name=__codelineno-8-6 href=#__codelineno-8-6></a><span class=w> </span><span class=nt>&quot;lastRunAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T10:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-8-7><a id=__codelineno-8-7 name=__codelineno-8-7 href=#__codelineno-8-7></a><span class=w> </span><span class=nt>&quot;nextRunAt&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-8-8><a id=__codelineno-8-8 name=__codelineno-8-8 href=#__codelineno-8-8></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-8-9><a id=__codelineno-8-9 name=__codelineno-8-9 href=#__codelineno-8-9></a><span class=p>}</span>
</span></code></pre></div> <h3 id=runtime_activity_changed>RUNTIME_ACTIVITY_CHANGED<a class=headerlink href=#runtime_activity_changed title="Permanent link">&para;</a></h3> <p>Vollständiger Snapshot aller laufenden und kürzlich abgeschlossenen Aktivitäten.</p> <p>Wird ausgelöst, wenn eine Aktivität gestartet, aktualisiert oder abgeschlossen wird sowie nach <code>clear-recent</code>.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-9-1><a id=__codelineno-9-1 name=__codelineno-9-1 href=#__codelineno-9-1></a><span class=p>{</span>
</span><span id=__span-9-2><a id=__codelineno-9-2 name=__codelineno-9-2 href=#__codelineno-9-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;RUNTIME_ACTIVITY_CHANGED&quot;</span><span class=p>,</span>
</span><span id=__span-9-3><a id=__codelineno-9-3 name=__codelineno-9-3 href=#__codelineno-9-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-9-4><a id=__codelineno-9-4 name=__codelineno-9-4 href=#__codelineno-9-4></a><span class=w> </span><span class=nt>&quot;active&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[</span>
</span><span id=__span-9-5><a id=__codelineno-9-5 name=__codelineno-9-5 href=#__codelineno-9-5></a><span class=w> </span><span class=p>{</span>
</span><span id=__span-9-6><a id=__codelineno-9-6 name=__codelineno-9-6 href=#__codelineno-9-6></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>7</span><span class=p>,</span>
</span><span id=__span-9-7><a id=__codelineno-9-7 name=__codelineno-9-7 href=#__codelineno-9-7></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;chain&quot;</span><span class=p>,</span>
</span><span id=__span-9-8><a id=__codelineno-9-8 name=__codelineno-9-8 href=#__codelineno-9-8></a><span class=w> </span><span class=nt>&quot;name&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Post-Encode Aufräumen&quot;</span><span class=p>,</span>
</span><span id=__span-9-9><a id=__codelineno-9-9 name=__codelineno-9-9 href=#__codelineno-9-9></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;running&quot;</span><span class=p>,</span>
</span><span id=__span-9-10><a id=__codelineno-9-10 name=__codelineno-9-10 href=#__codelineno-9-10></a><span class=w> </span><span class=nt>&quot;source&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;cron&quot;</span><span class=p>,</span>
</span><span id=__span-9-11><a id=__codelineno-9-11 name=__codelineno-9-11 href=#__codelineno-9-11></a><span class=w> </span><span class=nt>&quot;message&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Schritt 2 von 3&quot;</span><span class=p>,</span>
</span><span id=__span-9-12><a id=__codelineno-9-12 name=__codelineno-9-12 href=#__codelineno-9-12></a><span class=w> </span><span class=nt>&quot;currentStep&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;cleanup.sh&quot;</span><span class=p>,</span>
</span><span id=__span-9-13><a id=__codelineno-9-13 name=__codelineno-9-13 href=#__codelineno-9-13></a><span class=w> </span><span class=nt>&quot;currentStepType&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;script&quot;</span><span class=p>,</span>
</span><span id=__span-9-14><a id=__codelineno-9-14 name=__codelineno-9-14 href=#__codelineno-9-14></a><span class=w> </span><span class=nt>&quot;stepIndex&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>2</span><span class=p>,</span>
</span><span id=__span-9-15><a id=__codelineno-9-15 name=__codelineno-9-15 href=#__codelineno-9-15></a><span class=w> </span><span class=nt>&quot;stepTotal&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-9-16><a id=__codelineno-9-16 name=__codelineno-9-16 href=#__codelineno-9-16></a><span class=w> </span><span class=nt>&quot;canCancel&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
</span><span id=__span-9-17><a id=__codelineno-9-17 name=__codelineno-9-17 href=#__codelineno-9-17></a><span class=w> </span><span class=nt>&quot;canNextStep&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>false</span><span class=p>,</span>
</span><span id=__span-9-18><a id=__codelineno-9-18 name=__codelineno-9-18 href=#__codelineno-9-18></a><span class=w> </span><span class=nt>&quot;outcome&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;running&quot;</span><span class=p>,</span>
</span><span id=__span-9-19><a id=__codelineno-9-19 name=__codelineno-9-19 href=#__codelineno-9-19></a><span class=w> </span><span class=nt>&quot;startedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T10:00:00.000Z&quot;</span><span class=p>,</span>
</span><span id=__span-9-20><a id=__codelineno-9-20 name=__codelineno-9-20 href=#__codelineno-9-20></a><span class=w> </span><span class=nt>&quot;finishedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span><span class=p>,</span>
</span><span id=__span-9-21><a id=__codelineno-9-21 name=__codelineno-9-21 href=#__codelineno-9-21></a><span class=w> </span><span class=nt>&quot;durationMs&quot;</span><span class=p>:</span><span class=w> </span><span class=kc>null</span>
</span><span id=__span-9-22><a id=__codelineno-9-22 name=__codelineno-9-22 href=#__codelineno-9-22></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-9-23><a id=__codelineno-9-23 name=__codelineno-9-23 href=#__codelineno-9-23></a><span class=w> </span><span class=p>],</span>
</span><span id=__span-9-24><a id=__codelineno-9-24 name=__codelineno-9-24 href=#__codelineno-9-24></a><span class=w> </span><span class=nt>&quot;recent&quot;</span><span class=p>:</span><span class=w> </span><span class=p>[],</span>
</span><span id=__span-9-25><a id=__codelineno-9-25 name=__codelineno-9-25 href=#__codelineno-9-25></a><span class=w> </span><span class=nt>&quot;updatedAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-10T10:00:05.000Z&quot;</span>
</span><span id=__span-9-26><a id=__codelineno-9-26 name=__codelineno-9-26 href=#__codelineno-9-26></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-9-27><a id=__codelineno-9-27 name=__codelineno-9-27 href=#__codelineno-9-27></a><span class=p>}</span>
</span></code></pre></div> <p>Vollständige Feldbeschreibung: <a href=../runtime-activities/ >Runtime Activities API</a>.</p> <h3 id=converter_scan_update>CONVERTER_SCAN_UPDATE<a class=headerlink href=#converter_scan_update title="Permanent link">&para;</a></h3> <p>Wird nach einem Scan des Converter-Eingangsordners gesendet (manuell oder per Polling).</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-10-1><a id=__codelineno-10-1 name=__codelineno-10-1 href=#__codelineno-10-1></a><span class=p>{</span>
</span><span id=__span-10-2><a id=__codelineno-10-2 name=__codelineno-10-2 href=#__codelineno-10-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;CONVERTER_SCAN_UPDATE&quot;</span><span class=p>,</span>
</span><span id=__span-10-3><a id=__codelineno-10-3 name=__codelineno-10-3 href=#__codelineno-10-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-10-4><a id=__codelineno-10-4 name=__codelineno-10-4 href=#__codelineno-10-4></a><span class=w> </span><span class=nt>&quot;entryCount&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>12</span>
</span><span id=__span-10-5><a id=__codelineno-10-5 name=__codelineno-10-5 href=#__codelineno-10-5></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-10-6><a id=__codelineno-10-6 name=__codelineno-10-6 href=#__codelineno-10-6></a><span class=p>}</span>
</span></code></pre></div> <h3 id=downloads_updated>DOWNLOADS_UPDATED<a class=headerlink href=#downloads_updated title="Permanent link">&para;</a></h3> <p>Wird bei jeder Statusänderung in der Download-Queue gesendet.</p> <div class="language-json highlight"><pre><span></span><code><span id=__span-11-1><a id=__codelineno-11-1 name=__codelineno-11-1 href=#__codelineno-11-1></a><span class=p>{</span>
</span><span id=__span-11-2><a id=__codelineno-11-2 name=__codelineno-11-2 href=#__codelineno-11-2></a><span class=w> </span><span class=nt>&quot;type&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;DOWNLOADS_UPDATED&quot;</span><span class=p>,</span>
</span><span id=__span-11-3><a id=__codelineno-11-3 name=__codelineno-11-3 href=#__codelineno-11-3></a><span class=w> </span><span class=nt>&quot;payload&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-11-4><a id=__codelineno-11-4 name=__codelineno-11-4 href=#__codelineno-11-4></a><span class=w> </span><span class=nt>&quot;reason&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ready&quot;</span><span class=p>,</span>
</span><span id=__span-11-5><a id=__codelineno-11-5 name=__codelineno-11-5 href=#__codelineno-11-5></a><span class=w> </span><span class=nt>&quot;item&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-11-6><a id=__codelineno-11-6 name=__codelineno-11-6 href=#__codelineno-11-6></a><span class=w> </span><span class=nt>&quot;id&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;dl-1&quot;</span><span class=p>,</span>
</span><span id=__span-11-7><a id=__codelineno-11-7 name=__codelineno-11-7 href=#__codelineno-11-7></a><span class=w> </span><span class=nt>&quot;jobId&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>42</span><span class=p>,</span>
</span><span id=__span-11-8><a id=__codelineno-11-8 name=__codelineno-11-8 href=#__codelineno-11-8></a><span class=w> </span><span class=nt>&quot;status&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;ready&quot;</span><span class=p>,</span>
</span><span id=__span-11-9><a id=__codelineno-11-9 name=__codelineno-11-9 href=#__codelineno-11-9></a><span class=w> </span><span class=nt>&quot;archiveName&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;Job_42_movie.zip&quot;</span><span class=p>,</span>
</span><span id=__span-11-10><a id=__codelineno-11-10 name=__codelineno-11-10 href=#__codelineno-11-10></a><span class=w> </span><span class=nt>&quot;createdAt&quot;</span><span class=p>:</span><span class=w> </span><span class=s2>&quot;2026-03-30T10:00:00.000Z&quot;</span>
</span><span id=__span-11-11><a id=__codelineno-11-11 name=__codelineno-11-11 href=#__codelineno-11-11></a><span class=w> </span><span class=p>},</span>
</span><span id=__span-11-12><a id=__codelineno-11-12 name=__codelineno-11-12 href=#__codelineno-11-12></a><span class=w> </span><span class=nt>&quot;summary&quot;</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
</span><span id=__span-11-13><a id=__codelineno-11-13 name=__codelineno-11-13 href=#__codelineno-11-13></a><span class=w> </span><span class=nt>&quot;total&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>3</span><span class=p>,</span>
</span><span id=__span-11-14><a id=__codelineno-11-14 name=__codelineno-11-14 href=#__codelineno-11-14></a><span class=w> </span><span class=nt>&quot;pending&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-11-15><a id=__codelineno-11-15 name=__codelineno-11-15 href=#__codelineno-11-15></a><span class=w> </span><span class=nt>&quot;processing&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>0</span><span class=p>,</span>
</span><span id=__span-11-16><a id=__codelineno-11-16 name=__codelineno-11-16 href=#__codelineno-11-16></a><span class=w> </span><span class=nt>&quot;ready&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span><span class=p>,</span>
</span><span id=__span-11-17><a id=__codelineno-11-17 name=__codelineno-11-17 href=#__codelineno-11-17></a><span class=w> </span><span class=nt>&quot;failed&quot;</span><span class=p>:</span><span class=w> </span><span class=mi>1</span>
</span><span id=__span-11-18><a id=__codelineno-11-18 name=__codelineno-11-18 href=#__codelineno-11-18></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-11-19><a id=__codelineno-11-19 name=__codelineno-11-19 href=#__codelineno-11-19></a><span class=w> </span><span class=p>}</span>
</span><span id=__span-11-20><a id=__codelineno-11-20 name=__codelineno-11-20 href=#__codelineno-11-20></a><span class=p>}</span>
</span></code></pre></div> <p>Mögliche <code>reason</code>-Werte: <code>queued</code>, <code>processing</code>, <code>ready</code>, <code>failed</code>, <code>deleted</code>.</p> <hr> <h2 id=reconnect-verhalten>Reconnect-Verhalten<a class=headerlink href=#reconnect-verhalten title="Permanent link">&para;</a></h2> <p><code>useWebSocket</code> verbindet bei Abbruch automatisch neu:</p> <ul> <li>Retry-Intervall: <code>1500ms</code></li> <li>Wiederverbindung bis Komponente unmounted wird</li> </ul> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Zurück zum Seitenanfang </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/YOUR_GITHUB_USERNAME/ripster target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"annotate": null, "base": "../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.indexes", "navigation.top", "search.highlight", "search.suggest", "content.code.copy", "content.code.annotate", "content.tabs.link", "toc.integrate"], "search": "../../assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}, "version": {"provider": "mike"}}</script> <script src=../../assets/javascripts/bundle.e71a0d61.min.js></script> </body> </html>