Files
ripster/site/api/runtime-activities/index.html
2026-03-11 14:54:08 +00:00

74 lines
56 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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=../crons/ 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 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Suche placeholder=Suche autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon 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.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Suche> <button type=reset class="md-search__icon md-icon" title=Zurücksetzen aria-label=Zurücksetzen tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> <div class=md-search__suggest data-md-component=search-suggest></div> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Suche wird initialisiert </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/mboehmlaender/ripster title="Zum Repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <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> </div> <div class=md-source__repository> ripster </div> </a> </div> </nav> <nav class=md-tabs aria-label=Hauptnavigation data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../getting-started/ class=md-tabs__link> Benutzerhandbuch </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=../../appendix/ class=md-tabs__link> Technischer Anhang </a> </li> </ul> </div> </nav> </header> <div class=md-container data-md-component=container> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title=Ripster class="md-nav__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> Ripster </label> <div class=md-nav__source> <a href=https://github.com/mboehmlaender/ripster title="Zum Repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <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> </div> <div class=md-source__repository> ripster </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../.. class=md-nav__link> <span class=md-ellipsis> Home </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_2> <div class="md-nav__link md-nav__container"> <a href=../../getting-started/ class="md-nav__link "> <span class=md-ellipsis> Benutzerhandbuch </span> </a> <label class="md-nav__link " for=__nav_2 id=__nav_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Benutzerhandbuch </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../getting-started/prerequisites/ class=md-nav__link> <span class=md-ellipsis> Voraussetzungen </span> </a> </li> <li class=md-nav__item> <a href=../../getting-started/installation/ class=md-nav__link> <span class=md-ellipsis> Installation </span> </a> </li> <li class=md-nav__item> <a href=../../getting-started/configuration/ class=md-nav__link> <span class=md-ellipsis> Ersteinrichtung </span> </a> </li> <li class=md-nav__item> <a href=../../getting-started/quickstart/ class=md-nav__link> <span class=md-ellipsis> Erster Lauf </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../gui/ class="md-nav__link "> <span class=md-ellipsis> GUI-Seiten </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> GUI-Seiten </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../gui/dashboard/ class=md-nav__link> <span class=md-ellipsis> Dashboard </span> </a> </li> <li class=md-nav__item> <a href=../../gui/settings/ class=md-nav__link> <span class=md-ellipsis> Settings </span> </a> </li> <li class=md-nav__item> <a href=../../gui/history/ class=md-nav__link> <span class=md-ellipsis> Historie </span> </a> </li> <li class=md-nav__item> <a href=../../gui/database/ class=md-nav__link> <span class=md-ellipsis> Database (Expert) </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../workflows/ class=md-nav__link> <span class=md-ellipsis> Workflows aus Nutzersicht </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3 checked> <div class="md-nav__link md-nav__container"> <a href=../../appendix/ class="md-nav__link "> <span class=md-ellipsis> Technischer Anhang </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=true> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Technischer Anhang </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_3_2> <div class="md-nav__link md-nav__container"> <a href=../../configuration/ class="md-nav__link "> <span class=md-ellipsis> Konfiguration </span> </a> <label class="md-nav__link " for=__nav_3_2 id=__nav_3_2_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_2_label aria-expanded=false> <label class=md-nav__title for=__nav_3_2> <span class="md-nav__icon md-icon"></span> Konfiguration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../configuration/settings-reference/ class=md-nav__link> <span class=md-ellipsis> Alle Einstellungen </span> </a> </li> <li class=md-nav__item> <a href=../../configuration/environment/ class=md-nav__link> <span class=md-ellipsis> Umgebungsvariablen </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_3_3> <div class="md-nav__link md-nav__container"> <a href=../../pipeline/ class="md-nav__link "> <span class=md-ellipsis> Pipeline intern </span> </a> <label class="md-nav__link " for=__nav_3_3 id=__nav_3_3_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3_3> <span class="md-nav__icon md-icon"></span> Pipeline intern </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../pipeline/workflow/ class=md-nav__link> <span class=md-ellipsis> Workflow & Zustände </span> </a> </li> <li class=md-nav__item> <a href=../../pipeline/encoding/ class=md-nav__link> <span class=md-ellipsis> Encode-Planung & Track-Auswahl </span> </a> </li> <li class=md-nav__item> <a href=../../pipeline/playlist-analysis/ class=md-nav__link> <span class=md-ellipsis> Playlist-Analyse </span> </a> </li> <li class=md-nav__item> <a href=../../pipeline/post-encode-scripts/ class=md-nav__link> <span class=md-ellipsis> Encode-Skripte (Pre & Post) </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3_4 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> API-Referenz </span> </a> <label class="md-nav__link " for=__nav_3_4 id=__nav_3_4_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_4_label aria-expanded=true> <label class=md-nav__title for=__nav_3_4> <span class="md-nav__icon md-icon"></span> API-Referenz </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../pipeline/ class=md-nav__link> <span class=md-ellipsis> Pipeline API </span> </a> </li> <li class=md-nav__item> <a href=../settings/ class=md-nav__link> <span class=md-ellipsis> Settings API </span> </a> </li> <li class=md-nav__item> <a href=../history/ class=md-nav__link> <span class=md-ellipsis> History API </span> </a> </li> <li class=md-nav__item> <a href=../crons/ class=md-nav__link> <span class=md-ellipsis> Cron API </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Runtime Activities API </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Runtime Activities API </span> </a> <nav class="md-nav md-nav--secondary" aria-label=Inhaltsverzeichnis> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Inhaltsverzeichnis </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#ubersicht class=md-nav__link> <span class=md-ellipsis> Übersicht </span> </a> </li> <li class=md-nav__item> <a href=#aktivitats-objekt class=md-nav__link> <span class=md-ellipsis> Aktivitäts-Objekt </span> </a> <nav class=md-nav aria-label=Aktivitäts-Objekt> <ul class=md-nav__list> <li class=md-nav__item> <a href=#felder class=md-nav__link> <span class=md-ellipsis> Felder </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#snapshot-objekt class=md-nav__link> <span class=md-ellipsis> Snapshot-Objekt </span> </a> </li> <li class=md-nav__item> <a href=#endpunkte class=md-nav__link> <span class=md-ellipsis> Endpunkte </span> </a> <nav class=md-nav aria-label=Endpunkte> <ul class=md-nav__list> <li class=md-nav__item> <a href=#get-apiactivities class=md-nav__link> <span class=md-ellipsis> GET /api/activities </span> </a> </li> <li class=md-nav__item> <a href=#post-apiactivitiesidcancel class=md-nav__link> <span class=md-ellipsis> POST /api/activities/:id/cancel </span> </a> </li> <li class=md-nav__item> <a href=#post-apiactivitiesidnext-step class=md-nav__link> <span class=md-ellipsis> POST /api/activities/:id/next-step </span> </a> </li> <li class=md-nav__item> <a href=#post-apiactivitiesclear-recent class=md-nav__link> <span class=md-ellipsis> POST /api/activities/clear-recent </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#grenzwerte class=md-nav__link> <span class=md-ellipsis> Grenzwerte </span> </a> </li> <li class=md-nav__item> <a href=#echtzeit-updates class=md-nav__link> <span class=md-ellipsis> Echtzeit-Updates </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../websocket/ class=md-nav__link> <span class=md-ellipsis> WebSocket Events </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_3_5> <div class="md-nav__link md-nav__container"> <a href=../../architecture/ class="md-nav__link "> <span class=md-ellipsis> Architektur </span> </a> <label class="md-nav__link " for=__nav_3_5 id=__nav_3_5_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_5_label aria-expanded=false> <label class=md-nav__title for=__nav_3_5> <span class="md-nav__icon md-icon"></span> Architektur </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../architecture/overview/ class=md-nav__link> <span class=md-ellipsis> Übersicht </span> </a> </li> <li class=md-nav__item> <a href=../../architecture/backend/ class=md-nav__link> <span class=md-ellipsis> Backend-Services </span> </a> </li> <li class=md-nav__item> <a href=../../architecture/frontend/ class=md-nav__link> <span class=md-ellipsis> Frontend-Komponenten </span> </a> </li> <li class=md-nav__item> <a href=../../architecture/database/ class=md-nav__link> <span class=md-ellipsis> Datenbank </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_3_6> <div class="md-nav__link md-nav__container"> <a href=../../deployment/ class="md-nav__link "> <span class=md-ellipsis> Deployment </span> </a> <label class="md-nav__link " for=__nav_3_6 id=__nav_3_6_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_6_label aria-expanded=false> <label class=md-nav__title for=__nav_3_6> <span class="md-nav__icon md-icon"></span> Deployment </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../deployment/development/ class=md-nav__link> <span class=md-ellipsis> Entwicklungsumgebung </span> </a> </li> <li class=md-nav__item> <a href=../../deployment/production/ class=md-nav__link> <span class=md-ellipsis> Produktion </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_3_7> <div class="md-nav__link md-nav__container"> <a href=../../tools/ class="md-nav__link "> <span class=md-ellipsis> Externe Tools </span> </a> <label class="md-nav__link " for=__nav_3_7 id=__nav_3_7_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_3_7_label aria-expanded=false> <label class=md-nav__title for=__nav_3_7> <span class="md-nav__icon md-icon"></span> Externe Tools </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../tools/makemkv/ class=md-nav__link> <span class=md-ellipsis> MakeMKV </span> </a> </li> <li class=md-nav__item> <a href=../../tools/handbrake/ class=md-nav__link> <span class=md-ellipsis> HandBrake </span> </a> </li> <li class=md-nav__item> <a href=../../tools/mediainfo/ class=md-nav__link> <span class=md-ellipsis> MediaInfo </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <h1 id=runtime-activities-api>Runtime Activities API<a class=headerlink href=#runtime-activities-api title="Permanent link">&para;</a></h1> <p>Ripster verfolgt alle laufenden und kürzlich abgeschlossenen Aktivitäten (Skripte, Skript-Ketten, Cron-Jobs, interne Tasks) in Echtzeit über den <code>RuntimeActivityService</code>.</p> <hr> <h2 id=ubersicht>Übersicht<a class=headerlink href=#ubersicht title="Permanent link">&para;</a></h2> <p>Aktivitäten entstehen, wenn Ripster intern Aktionen ausführt z. B. beim Start eines Cron-Jobs, beim Ausführen einer Skript-Kette oder beim Durchlaufen von Pipeline-Schritten. Sie sind <strong>nicht persistent</strong> (kein DB-Speicher) und werden nur im Arbeitsspeicher gehalten.</p> <ul> <li><strong>Aktive Aktivitäten</strong> (<code>active</code>): Laufen gerade.</li> <li><strong>Letzte Aktivitäten</strong> (<code>recent</code>): Abgeschlossen, max. 120 Einträge.</li> </ul> <p>Änderungen werden über WebSocket (<code>RUNTIME_ACTIVITY_CHANGED</code>) in Echtzeit gesendet.</p> <hr> <h2 id=aktivitats-objekt>Aktivitäts-Objekt<a class=headerlink href=#aktivitats-objekt title="Permanent link">&para;</a></h2> <div class="language-json highlight"><pre><span></span><code><span id=__span-0-1><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=p>{</span>
</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-apiactivities>GET <code>/api/activities</code><a class=headerlink href=#get-apiactivities 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-apiactivitiesidcancel>POST <code>/api/activities/:id/cancel</code><a class=headerlink href=#post-apiactivitiesidcancel 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-apiactivitiesidnext-step>POST <code>/api/activities/:id/next-step</code><a class=headerlink href=#post-apiactivitiesidnext-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-apiactivitiesclear-recent>POST <code>/api/activities/clear-recent</code><a class=headerlink href=#post-apiactivitiesclear-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/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": "Version ausw\u00e4hlen"}, "version": {"provider": "mike"}}</script> <script src=../../assets/javascripts/bundle.e71a0d61.min.js></script> </body> </html>