{"componentChunkName":"component---src-templates-doc-page-tsx","path":"/de/docs/dogus/usermgt/development/robots/","result":{"data":{"markdownRemark":{"html":"<h2 id=\"technische-konten-architektur-und-api\" style=\"position:relative;\"><a href=\"#technische-konten-architektur-und-api\" aria-label=\"technische konten architektur und api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Technische Konten: Architektur und API</h2>\n<p>Technische Konten ermöglichen automatisierte Zugriffe auf das Cloudogu EcoSystem unabhängig vom persönlichen Konto eines Mitarbeiters. Die Funktion verbindet ein Benutzerkonto im LDAP mit einem Zugriffsschlüssel in CAS. Im Quellcode und in den API-Pfaden werden technische Konten als <code class=\"language-text\">robots</code> bezeichnet.</p>\n<p>Diese Dokumentation beschreibt die aktuelle Implementierung und die API für Integrationen. Eine Anleitung zur Bedienoberfläche finden Sie unter Technische Konten.</p>\n<h3 id=\"aufbau-und-zuständigkeiten\" style=\"position:relative;\"><a href=\"#aufbau-und-zust%C3%A4ndigkeiten\" aria-label=\"aufbau und zuständigkeiten permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Aufbau und Zuständigkeiten</h3>\n<table>\n<thead>\n<tr>\n<th>Bestandteil</th>\n<th>Aufgabe</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">RobotResource</code></td>\n<td>Stellt die HTTP-Endpunkte bereit, prüft die Berechtigung und übersetzt Servicefehler in HTTP-Antworten.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">RobotService</code></td>\n<td>Verknüpft LDAP-Konten mit CAS-Schlüsseln und steuert Anlegen, Erneuern und Löschen.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">PATClient</code></td>\n<td>Führt die HTTP-Anfragen an die PAT-API von CAS aus.</td>\n</tr>\n<tr>\n<td>LDAP</td>\n<td>Speichert das technische Benutzerkonto mit dem Attribut <code class=\"language-text\">technical=TRUE</code>.</td>\n</tr>\n<tr>\n<td>CAS</td>\n<td>Verwaltet die Zugriffsschlüssel und deren Metadaten.</td>\n</tr>\n<tr>\n<td>Frontend-Service <code class=\"language-text\">RobotsService</code></td>\n<td>Ruft die Endpunkte des User Managements auf.</td>\n</tr>\n</tbody>\n</table>\n<p>Das Konto und sein Schlüssel sind getrennte Objekte. Beim Erneuern bleibt das LDAP-Konto bestehen, während CAS einen neuen Schlüssel erzeugt und den bisherigen löscht. Beim Löschen über die Robots-API werden dagegen der adressierte Schlüssel und das zugehörige technische Konto entfernt.</p>\n<h3 id=\"zugriff-und-basis-url\" style=\"position:relative;\"><a href=\"#zugriff-und-basis-url\" aria-label=\"zugriff und basis url permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Zugriff und Basis-URL</h3>\n<p>Die API ist unter folgender Basis-URL erreichbar:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">https://&lt;ces-host&gt;/usermgt/api/robots</code></pre></div>\n<p>Alle Operationen setzen ein authentifiziertes Konto mit der internen Rolle <code class=\"language-text\">Universe Administrator</code> voraus. Die Rollenprüfung erfolgt in jeder Methode von <code class=\"language-text\">RobotResource</code>. In der CAS-Konfiguration wird die konfigurierte Administratorrolle auf diese interne Rolle abgebildet. Für Integrationen ist diese serverseitige Rolle maßgeblich, auch wenn die Berechtigung in der Oberfläche als Managerrecht bezeichnet wird.</p>\n<p>Die folgenden <code class=\"language-text\">curl</code>-Beispiele verwenden eine bereits authentifizierte User-Management-Sitzung. <code class=\"language-text\">cookies.txt</code> steht für eine Cookie-Datei im von <code class=\"language-text\">curl</code> unterstützten Format mit den gültigen Sitzungscookies. Die Anmeldung selbst ist nicht Teil der Robots-API. Ersetzen Sie Host, IDs und Beispieldaten durch Werte Ihrer Umgebung.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token builtin class-name\">export</span> <span class=\"token assign-left variable\">ROBOTS_API</span><span class=\"token operator\">=</span><span class=\"token string\">'https://&lt;ces-host>/usermgt/api/robots'</span></code></pre></div>\n<p>Requests mit JSON-Inhalt verwenden <code class=\"language-text\">Content-Type: application/json</code>. Antworten mit Nutzdaten werden als <code class=\"language-text\">application/json</code> ausgegeben. Nicht authentifizierte Requests können bereits vor der Resource durch die Sicherheitsfilter abgewiesen oder zur Anmeldung umgeleitet werden.</p>\n<h3 id=\"endpunkte-im-überblick\" style=\"position:relative;\"><a href=\"#endpunkte-im-%C3%BCberblick\" aria-label=\"endpunkte im überblick permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Endpunkte im Überblick</h3>\n<table>\n<thead>\n<tr>\n<th>Methode</th>\n<th>Pfad relativ zur Basis-URL</th>\n<th>Funktion</th>\n<th>Erfolgsstatus</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">GET</code></td>\n<td>leer</td>\n<td>Technische Konten mit Schlüsselmetadaten auflisten</td>\n<td><code class=\"language-text\">200 OK</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">GET</code></td>\n<td><code class=\"language-text\">/{userId}/{id}</code></td>\n<td>Schlüsselmetadaten eines technischen Kontos einzeln lesen</td>\n<td><code class=\"language-text\">200 OK</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">POST</code></td>\n<td>leer</td>\n<td>Technisches Konto und ersten Schlüssel anlegen</td>\n<td><code class=\"language-text\">201 Created</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">PUT</code></td>\n<td><code class=\"language-text\">/{username}</code></td>\n<td>Einen vorhandenen Schlüssel ersetzen</td>\n<td><code class=\"language-text\">201 Created</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">DELETE</code></td>\n<td><code class=\"language-text\">/{username}</code></td>\n<td>Schlüssel und zugehöriges technisches Konto löschen</td>\n<td><code class=\"language-text\">204 No Content</code></td>\n</tr>\n</tbody>\n</table>\n<p><code class=\"language-text\">username</code> ist die <strong>LDAP-Benutzerkennung</strong> aus dem Antwortfeld <code class=\"language-text\">userId</code>. Kodieren Sie sie als URL-Pfadsegment. Die Benutzerkennung bleibt beim Erneuern gleich; nur die CAS-Schlüssel-ID ändert sich. Erneuern und Löschen verwenden den ersten CAS-Schlüssel des Kontos, wie die Übersicht.</p>\n<p><code class=\"language-text\">GET /{userId}/{id}</code> verwendet die LDAP-Benutzerkennung aus <code class=\"language-text\">userId</code> und die CAS-Schlüssel-ID aus <code class=\"language-text\">id</code>. Kodieren Sie beide als URL-Pfadsegmente. Das Backend sucht gezielt dieses technische LDAP-Konto und lädt ausschließlich dessen CAS-Schlüssel. Der passende Schlüssel wird als einzelnes Metadatenobjekt ohne den geheimen Schlüsselwert <code class=\"language-text\">token</code> zurückgegeben. Fehlen Konto oder angeforderter Schlüssel, lautet die Antwort <code class=\"language-text\">404</code>. Für den Anzeigenamen gelten dieselben Regeln wie in der Übersicht. Beispiel: <code class=\"language-text\">GET /usermgt/api/robots/datenabgleich/pat-123</code>. Das Frontend verwendet diesen Endpunkt für die Detailansicht; die URL der Detailseite enthält Benutzerkennung und Schlüssel-ID.</p>\n<h3 id=\"konten-und-schlüsselmetadaten-abfragen\" style=\"position:relative;\"><a href=\"#konten-und-schl%C3%BCsselmetadaten-abfragen\" aria-label=\"konten und schlüsselmetadaten abfragen permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Konten und Schlüsselmetadaten abfragen</h3>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> --cookie cookies.txt <span class=\"token punctuation\">\\</span>\n  --header <span class=\"token string\">'Accept: application/json'</span> <span class=\"token punctuation\">\\</span>\n  <span class=\"token string\">\"<span class=\"token variable\">$ROBOTS_API</span>\"</span></code></pre></div>\n<p>Beispielantwort mit <code class=\"language-text\">200 OK</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">[</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"pat-123\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"userId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"datenabgleich\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"displayName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"datenabgleich\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"createdAt\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2026-11-10T10:00:00Z\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"expiresAt\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2099-01-01T00:00:00Z\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"scope\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/scm,/redmine\"</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">]</span></code></pre></div>\n<p>Die Werte dienen als Beispiel. Die konkreten IDs und Zeitangaben stammen aus CAS.</p>\n<table>\n<thead>\n<tr>\n<th>Feld</th>\n<th>Bedeutung</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>ID des Schlüssels in CAS.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">userId</code></td>\n<td>LDAP-Benutzerkennung; wird für Erneuern und Löschen verwendet.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">displayName</code></td>\n<td>In der Übersicht der LDAP-Anzeigename; bei leerem Anzeigenamen wird der Benutzername verwendet.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">createdAt</code></td>\n<td>Erstellungszeitpunkt des Schlüssels aus CAS.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">expiresAt</code></td>\n<td>Ablaufzeitpunkt des Schlüssels. Ohne Ablaufdatum kann das Feld fehlen.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scope</code></td>\n<td>Geltungsbereich des Schlüssels, beispielsweise <code class=\"language-text\">/scm,/redmine</code> oder <code class=\"language-text\">/*</code>.</td>\n</tr>\n</tbody>\n</table>\n<p>Die Übersicht enthält niemals das Feld <code class=\"language-text\">token</code>. Ein Feld <code class=\"language-text\">status</code> wird vom Backend ebenfalls nicht ausgegeben; das Frontend leitet den Status aus dem Ablaufdatum ab. Die Gson-Serialisierung lässt Felder mit dem Wert <code class=\"language-text\">null</code> weg.</p>\n<h4 id=\"wie-die-liste-entsteht\" style=\"position:relative;\"><a href=\"#wie-die-liste-entsteht\" aria-label=\"wie die liste entsteht permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Wie die Liste entsteht</h4>\n<ol>\n<li>Der Service sucht unter der konfigurierten Benutzerbasis im LDAP nach dem Benutzer-Basisfilter und <code class=\"language-text\">technical=TRUE</code>.</li>\n<li>Die LDAP-Suche liest Seiten mit jeweils bis zu 100 Einträgen und folgt den Paging-Cookies bis zum Ende. Benutzername und Anzeigename werden über das konfigurierte Attribut-Mapping gelesen.</li>\n<li>Die gefundenen Konten werden nach Benutzername sortiert, ohne Groß- und Kleinschreibung zu unterscheiden.</li>\n<li>Für jedes Konto fragt der Service die Schlüsselmetadaten bei CAS ab.</li>\n<li>Pro Konto wird nur der erste Schlüssel in der von CAS gelieferten Reihenfolge in die Übersicht aufgenommen.</li>\n</ol>\n<p>Konten ohne Schlüssel werden ausgelassen. Eine CAS-Antwort <code class=\"language-text\">204</code> gilt dabei als leere Schlüsselliste. Scheitert eine LDAP- oder CAS-Abfrage, schlägt der gesamte Request fehl; die API liefert keine unvollständige Übersicht zurück.</p>\n<p>Die öffentliche API bietet keine Paging-Parameter. Ein Listenaufruf kann mehrere LDAP-Seiten und eine CAS-Anfrage pro technischem Konto auslösen. Die normale Benutzerübersicht filtert technische Konten aus.</p>\n<h3 id=\"technisches-konto-anlegen\" style=\"position:relative;\"><a href=\"#technisches-konto-anlegen\" aria-label=\"technisches konto anlegen permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Technisches Konto anlegen</h3>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> --cookie cookies.txt <span class=\"token punctuation\">\\</span>\n  --request POST <span class=\"token punctuation\">\\</span>\n  --header <span class=\"token string\">'Content-Type: application/json'</span> <span class=\"token punctuation\">\\</span>\n  --header <span class=\"token string\">'Accept: application/json'</span> <span class=\"token punctuation\">\\</span>\n  --data <span class=\"token string\">'{\n    \"displayName\": \"datenabgleich\",\n    \"expiresAt\": \"2099-01-01T00:00:00Z\",\n    \"scope\": \"/scm,/redmine\"\n  }'</span> <span class=\"token punctuation\">\\</span>\n  <span class=\"token string\">\"<span class=\"token variable\">$ROBOTS_API</span>\"</span></code></pre></div>\n<table>\n<thead>\n<tr>\n<th>Request-Feld</th>\n<th>Pflicht</th>\n<th>Verhalten</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">displayName</code></td>\n<td>Ja</td>\n<td>Wird zugleich als Benutzername verwendet. Erlaubt sind 2 bis 64 Zeichen aus <code class=\"language-text\">a–z</code>, <code class=\"language-text\">A–Z</code>, <code class=\"language-text\">0–9</code>, <code class=\"language-text\">_</code>, <code class=\"language-text\">@</code>, <code class=\"language-text\">.</code> und <code class=\"language-text\">-</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">expiresAt</code></td>\n<td>Nein</td>\n<td>ISO-8601-Zeitpunkt, der von <code class=\"language-text\">Instant.parse</code> gelesen werden kann und in der Zukunft liegen muss, zum Beispiel <code class=\"language-text\">2099-01-01T00:00:00Z</code>. Fehlend oder <code class=\"language-text\">null</code> bedeutet, dass kein Ablaufdatum an CAS gesendet wird.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scope</code></td>\n<td>Im Frontend ja</td>\n<td>Das Frontend sendet eine kommaseparierte Liste von Dogu-Pfaden oder <code class=\"language-text\">/*</code> für alle Dogus. <code class=\"language-text\">RobotService</code> validiert dieses Feld nicht selbst, sondern reicht es an CAS weiter.</td>\n</tr>\n</tbody>\n</table>\n<p>Die Zeitangabe ist ein absoluter Zeitpunkt. Angaben wie <code class=\"language-text\">30</code> oder <code class=\"language-text\">30 Tage</code> sind nicht zulässig. Die Oberfläche berechnet aus der gewählten Anzahl von Tagen einen entsprechenden Zeitpunkt.</p>\n<p>Beispielantwort mit <code class=\"language-text\">201 Created</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"pat-123\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"userId\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"datenabgleich\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"displayName\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"datenabgleich\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"createdAt\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2026-11-10T10:00:00Z\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"expiresAt\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2099-01-01T00:00:00Z\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"scope\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"/scm,/redmine\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"token\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BEISPIEL-KEIN-ECHTER-SCHLUESSEL\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Der Service übernimmt die Metadaten aus CAS und setzt <code class=\"language-text\">userId</code> und <code class=\"language-text\">displayName</code> auf den LDAP-Benutzernamen. Er verlangt mindestens eine nicht leere <code class=\"language-text\">id</code> und einen nicht leeren <code class=\"language-text\">token</code> von CAS. Andere Metadaten können fehlen, wenn CAS sie nicht liefert.</p>\n<p>Der geheime Schlüsselwert wird nur in der erfolgreichen Antwort auf das Anlegen oder Erneuern zurückgegeben. Die Robots-API bietet keine Möglichkeit, ihn später erneut abzurufen.</p>\n<h4 id=\"ablauf-in-ldap-und-cas\" style=\"position:relative;\"><a href=\"#ablauf-in-ldap-und-cas\" aria-label=\"ablauf in ldap und cas permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Ablauf in LDAP und CAS</h4>\n<ol>\n<li>Der Service validiert Name und Ablaufdatum.</li>\n<li>Er erzeugt eine eindeutige technische E-Mail-Adresse, zum Beispiel <code class=\"language-text\">datenabgleich-robot@account.de</code>. Dafür wird der Name kleingeschrieben und werden Zeichen außerhalb von <code class=\"language-text\">a–z</code> und <code class=\"language-text\">0–9</code> durch Bindestriche zusammengefasst. Bei Konflikten wird eine laufende Nummer ergänzt. Der Teil vor <code class=\"language-text\">@</code> bleibt auf höchstens 64 Zeichen begrenzt.</li>\n<li>Benutzername, Anzeigename, Vorname und Nachname des neuen LDAP-Benutzers werden mit dem angegebenen Namen belegt. Die Gruppenliste ist zunächst leer; das Attribut <code class=\"language-text\">technical</code> wird auf <code class=\"language-text\">TRUE</code> gesetzt.</li>\n<li>Der Service erzeugt ein zufälliges internes Passwort. Abhängig von der LDAP-Konfiguration wird es vor dem Speichern gehasht. Das Passwort wird nicht an den API-Client zurückgegeben.</li>\n<li>Nach dem erfolgreichen LDAP-Anlegen erstellt <code class=\"language-text\">PATClient</code> den Schlüssel bei CAS.</li>\n<li>Erst nach erfolgreicher Schlüsselerstellung wird ein <code class=\"language-text\">UserEvent</code> vom Typ <code class=\"language-text\">CREATE</code> veröffentlicht.</li>\n</ol>\n<p>Scheitert die Schlüsselerstellung, versucht der Service, das gerade angelegte LDAP-Konto wieder zu löschen. Ein bereits vorhandenes Konto wird bei einem Namenskonflikt nicht verändert. Scheitert auch das Zurückrollen, wird der zusätzliche Fehler protokolliert; ein LDAP-Konto ohne nutzbaren Schlüssel kann zurückbleiben.</p>\n<h3 id=\"zugriffsschlüssel-erneuern\" style=\"position:relative;\"><a href=\"#zugriffsschl%C3%BCssel-erneuern\" aria-label=\"zugriffsschlüssel erneuern permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Zugriffsschlüssel erneuern</h3>\n<p>Die Erneuerung ersetzt den Schlüssel eines bestehenden technischen Kontos. Sie ist keine Änderung des bestehenden Schlüsselobjekts.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> --cookie cookies.txt <span class=\"token punctuation\">\\</span>\n  --request PUT <span class=\"token punctuation\">\\</span>\n  --header <span class=\"token string\">'Content-Type: application/json'</span> <span class=\"token punctuation\">\\</span>\n  --header <span class=\"token string\">'Accept: application/json'</span> <span class=\"token punctuation\">\\</span>\n  --data <span class=\"token string\">'{\"expiresAt\":\"2099-02-01T00:00:00Z\"}'</span> <span class=\"token punctuation\">\\</span>\n  <span class=\"token string\">\"<span class=\"token variable\">$ROBOTS_API</span>/datenabgleich\"</span></code></pre></div>\n<p>Das Ablaufdatum wird wie beim Anlegen über das Feld <code class=\"language-text\">expiresAt</code> angegeben.</p>\n<table>\n<thead>\n<tr>\n<th>Request-Inhalt</th>\n<th>Wirkung</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">{&quot;expiresAt&quot;:&quot;2099-02-01T00:00:00Z&quot;}</code></td>\n<td>Verwendet den angegebenen zukünftigen Ablaufzeitpunkt.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">{}</code></td>\n<td>Behält das bisherige Ablaufdatum bei.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">{&quot;expiresAt&quot;:null}</code></td>\n<td>Entfernt das Ablaufdatum.</td>\n</tr>\n</tbody>\n</table>\n<p>Ein ungültiger, leerer oder nicht in der Zukunft liegender expliziter Zeitpunkt führt zu <code class=\"language-text\">400 Bad Request</code>. Die Fehlernachrichten nennen dabei <code class=\"language-text\">expiresAt</code>, weil dieselbe Validierung wie beim Anlegen verwendet wird.</p>\n<p><strong>Ein explizites <code class=\"language-text\">null</code> entfernt das Ablaufdatum; ein fehlendes <code class=\"language-text\">expiresAt</code> behält es bei.</strong> Ein bereits unbefristeter Schlüssel bleibt ohne expliziten Zeitpunkt unbefristet. Bei einem abgelaufenen Schlüssel sollte ein neuer zukünftiger Zeitpunkt angegeben oder das Ablaufdatum explizit entfernt werden: Ohne Überschreibung wird das alte Ablaufdatum an CAS weitergegeben, nicht automatisch verlängert.</p>\n<p>Die Erfolgsantwort hat den Status <code class=\"language-text\">201 Created</code> und dieselbe Struktur wie beim Anlegen. Sie enthält die <strong>neue ID</strong> und den <strong>neuen geheimen Schlüsselwert</strong>. Für spätere Operationen verwenden Sie weiterhin dieselbe Benutzerkennung.</p>\n<h4 id=\"ablauf-und-fehlerbehandlung\" style=\"position:relative;\"><a href=\"#ablauf-und-fehlerbehandlung\" aria-label=\"ablauf und fehlerbehandlung permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Ablauf und Fehlerbehandlung</h4>\n<ol>\n<li>Der Service sucht gezielt das LDAP-Konto mit der angegebenen Benutzerkennung und <code class=\"language-text\">technical=TRUE</code>. Er lädt ausschließlich dessen CAS-Schlüssel und verwendet den ersten. Fehlen Konto oder Schlüssel, antwortet die API mit <code class=\"language-text\">404</code>.</li>\n<li>Er übernimmt Anzeigename und Geltungsbereich des alten CAS-Schlüssels und setzt gegebenenfalls den neuen Ablaufzeitpunkt.</li>\n<li>CAS erstellt zunächst einen neuen Schlüssel für denselben Benutzer.</li>\n<li>Anschließend wird der alte Schlüssel in CAS gelöscht.</li>\n<li>Erst danach gibt die API den neuen Schlüssel zurück. Das LDAP-Konto bleibt unverändert; ein Benutzerereignis wird dabei nicht veröffentlicht.</li>\n</ol>\n<p>Schlägt das Erstellen des Ersatzschlüssels fehl, wird der alte Schlüssel nicht gelöscht. Schlägt das anschließende Löschen des alten Schlüssels fehl, versucht der Service, den Ersatzschlüssel wieder zu entfernen. Auch dieser Rückrollversuch kann fehlschlagen und wird dann protokolliert.</p>\n<p>Nach erfolgreicher Erneuerung ist der alte Schlüssel ungültig. Anwendungen müssen auf den neuen Schlüssel umgestellt werden. Die Erneuerung ist nicht idempotent: Ein erneuter Request mit derselben Benutzerkennung ersetzt den inzwischen aktuellen Schlüssel erneut. Geht die Erfolgsantwort verloren, kann der neue Schlüsselwert nicht über die Übersicht nachgeladen werden.</p>\n<h3 id=\"technisches-konto-löschen\" style=\"position:relative;\"><a href=\"#technisches-konto-l%C3%B6schen\" aria-label=\"technisches konto löschen permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Technisches Konto löschen</h3>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">curl</span> --cookie cookies.txt <span class=\"token punctuation\">\\</span>\n  --request DELETE <span class=\"token punctuation\">\\</span>\n  <span class=\"token string\">\"<span class=\"token variable\">$ROBOTS_API</span>/datenabgleich\"</span></code></pre></div>\n<p>Bei Erfolg antwortet die API mit <code class=\"language-text\">204 No Content</code> ohne Antwortinhalt. Zum Löschen verwenden Sie die LDAP-Benutzerkennung, auch nach einer Erneuerung.</p>\n<p>Der Service liest gezielt das technische LDAP-Konto anhand der Benutzerkennung und lädt nur dessen CAS-Schlüssel. Danach löscht er zuerst den ersten Schlüssel in CAS, anschließend das Konto in LDAP und veröffentlicht ein <code class=\"language-text\">UserEvent</code> vom Typ <code class=\"language-text\">REMOVE</code>.</p>\n<p>Scheitert das Löschen des Schlüssels, bleibt das LDAP-Konto erhalten. Scheitert das LDAP-Löschen nach erfolgreichem CAS-Löschen, ist der Schlüssel bereits entfernt, während das Konto noch existieren kann. Dafür gibt es keinen automatischen Wiederherstellungsversuch. Ein <code class=\"language-text\">REMOVE</code>-Ereignis wird nur nach erfolgreichem LDAP-Löschen veröffentlicht.</p>\n<p>Die Operation löscht den ersten CAS-Schlüssel des angegebenen Kontos. Sie führt keine Schleife zum Löschen weiterer Schlüssel desselben Kontos aus. Das reguläre Anlegen und Erneuern ist auf einen verwalteten Schlüssel pro Konto ausgelegt.</p>\n<h3 id=\"statuscodes-und-fehlerantworten\" style=\"position:relative;\"><a href=\"#statuscodes-und-fehlerantworten\" aria-label=\"statuscodes und fehlerantworten permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Statuscodes und Fehlerantworten</h3>\n<table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Operationen</th>\n<th>Bedeutung</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">200 OK</code></td>\n<td><code class=\"language-text\">GET</code></td>\n<td>Metadatenliste (gegebenenfalls <code class=\"language-text\">[]</code>) oder einzelne Schlüsselmetadaten erfolgreich geladen.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">201 Created</code></td>\n<td><code class=\"language-text\">POST</code>, <code class=\"language-text\">PUT</code></td>\n<td>Konto mit Schlüssel angelegt beziehungsweise Ersatzschlüssel erstellt.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">204 No Content</code></td>\n<td><code class=\"language-text\">DELETE</code></td>\n<td>Schlüssel und Konto erfolgreich gelöscht.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">400 Bad Request</code></td>\n<td><code class=\"language-text\">POST</code>, <code class=\"language-text\">PUT</code>, <code class=\"language-text\">DELETE</code></td>\n<td>Servicevalidierung fehlgeschlagen, beispielsweise ungültiger Name, Zeitpunkt oder leere Benutzerkennung.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">403 Forbidden</code></td>\n<td>Alle</td>\n<td>Die Resource erkennt keine authentifizierte Identität mit der erforderlichen Rolle. Vorgeschaltete Filter können eine andere Antwort liefern.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">404 Not Found</code></td>\n<td><code class=\"language-text\">GET /{userId}/{id}</code>, <code class=\"language-text\">PUT</code>, <code class=\"language-text\">DELETE</code></td>\n<td>Das angegebene technische LDAP-Konto oder der Schlüssel existiert nicht.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">409 Conflict</code></td>\n<td><code class=\"language-text\">POST</code></td>\n<td>Der LDAP-Benutzername ist bereits vergeben, auch durch ein normales Benutzerkonto.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">500 Internal Server Error</code></td>\n<td>Alle</td>\n<td>Fehler beim LDAP-Zugriff.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">502 Bad Gateway</code></td>\n<td>Alle</td>\n<td>Fehler beim Zugriff auf CAS oder ungültige beziehungsweise unvollständige CAS-Antwort.</td>\n</tr>\n</tbody>\n</table>\n<p>Beispiele für Fehlerantworten:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span><span class=\"token property\">\"message\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"displayName must be a valid username with 2 to 64 characters\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span><span class=\"token property\">\"message\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"A user with this name already exists\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span><span class=\"token property\">\"message\"</span><span class=\"token operator\">:</span><span class=\"token string\">\"Failed to renew robot PAT in CAS\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n<p>Validierungs- und Servicefehler enthalten üblicherweise ein <code class=\"language-text\">message</code>-Feld. Die direkt erzeugten Antworten für <code class=\"language-text\">403</code> und <code class=\"language-text\">404</code> haben keinen Body. Fehler beim Einlesen des JSON oder bei vorgeschalteten Filtern können vom Framework erzeugt werden und anders aussehen.</p>\n<p>CAS-Fehler werden nicht unverändert mit ihrem ursprünglichen HTTP-Status weitergereicht. Beispielsweise wird ein von CAS abgelehnter Erstellungsrequest durch <code class=\"language-text\">RobotService</code> als Fehler behandelt und von der Resource mit <code class=\"language-text\">502</code> beantwortet.</p>\n<h3 id=\"interne-cas-requests\" style=\"position:relative;\"><a href=\"#interne-cas-requests\" aria-label=\"interne cas requests permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Interne CAS-Requests</h3>\n<p><code class=\"language-text\">PATClient</code> ergänzt an die konfigurierte CAS-Server-URL den Pfad <code class=\"language-text\">/api/users</code> und verwendet folgende Endpunkte:</p>\n<table>\n<thead>\n<tr>\n<th>Zweck</th>\n<th>Interner Request</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Schlüsselmetadaten lesen</td>\n<td><code class=\"language-text\">GET &lt;cas-server-url&gt;/api/users/{username}/pats</code></td>\n</tr>\n<tr>\n<td>Schlüssel erstellen</td>\n<td><code class=\"language-text\">POST &lt;cas-server-url&gt;/api/users/{username}/pats</code></td>\n</tr>\n<tr>\n<td>Schlüssel löschen</td>\n<td><code class=\"language-text\">DELETE &lt;cas-server-url&gt;/api/users/{username}/pats/{id}</code></td>\n</tr>\n</tbody>\n</table>\n<p>Der Benutzername wird als URL-Pfadsegment kodiert. Beim Erstellen werden <code class=\"language-text\">displayName</code>, gegebenenfalls <code class=\"language-text\">expiresAt</code> und <code class=\"language-text\">scope</code> als JSON gesendet. Auch bei einer Erneuerung lautet das interne CAS-Feld <code class=\"language-text\">expiresAt</code>.</p>\n<p>Für CAS-Anfragen liest <code class=\"language-text\">PATClient</code> die Java-Systemeigenschaften <code class=\"language-text\">cas.mfa.user</code> und <code class=\"language-text\">cas.mfa.password</code>. Sind beide gesetzt, sendet er HTTP Basic Authentication mit diesen Dienstzugangsdaten. Diese Zugangsdaten sind von der Sitzung des API-Aufrufers und vom neu erzeugten Zugriffsschlüssel getrennt. Verbindungs- und Lese-Timeout sind jeweils auf zehn Sekunden gesetzt.</p>\n<h3 id=\"grenzen-und-hinweise-für-integrationen\" style=\"position:relative;\"><a href=\"#grenzen-und-hinweise-f%C3%BCr-integrationen\" aria-label=\"grenzen und hinweise für integrationen permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Grenzen und Hinweise für Integrationen</h3>\n<ul>\n<li>LDAP und CAS bilden keine gemeinsame Transaktion. Die beschriebenen Rückrollversuche begrenzen Teilzustände, können diese aber bei weiteren Fehlern nicht vollständig verhindern.</li>\n<li><code class=\"language-text\">POST</code> legt bei jedem Aufruf ein Konto an und vergibt keine Idempotenz-ID. Nach einem Verbindungsabbruch sollte vor einem erneuten Versuch der tatsächliche Zustand geprüft werden. Ein wiederholter Aufruf mit demselben Namen kann <code class=\"language-text\">409</code> ergeben.</li>\n<li>Die Metadatenübersicht zeigt höchstens einen Schlüssel je Konto. Sie ist keine vollständige Auflistung aller in CAS vorhandenen Schlüssel.</li>\n<li>Die Zuordnung für Erneuern und Löschen wird aus dem technischen LDAP-Konto und dessen CAS-Schlüsseln ermittelt. Ein <code class=\"language-text\">userId</code> aus CAS wird dafür nicht als alleinige vertrauenswürdige Quelle verwendet.</li>\n<li>Neue technische Konten erhalten durch diese Implementierung keine Gruppenmitgliedschaften. Die Dogu-Auswahl eines Schlüssels ist von den fachlichen Berechtigungen innerhalb eines Dogus zu unterscheiden.</li>\n<li>Schlüsselwerte sollten von API-Clients sicher gespeichert und nicht in Anwendungsprotokolle geschrieben werden. Verlorene Schlüsselwerte müssen durch eine erneute Erneuerung ersetzt werden.</li>\n</ul>\n<h3 id=\"relevante-quelltexte-und-tests\" style=\"position:relative;\"><a href=\"#relevante-quelltexte-und-tests\" aria-label=\"relevante quelltexte und tests permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Relevante Quelltexte und Tests</h3>\n<ul>\n<li>RobotResource.java: Endpunkte, Rollenprüfung und Statuscodes.</li>\n<li>RobotService.java: LDAP-/CAS-Abläufe, Validierung und Rückrollversuche.</li>\n<li>CreateRobotRequest.java und RenewRobotRequest.java: Request-Felder.</li>\n<li>RobotPAT.java und CreatedRobotPAT.java: Antwortfelder.</li>\n<li>PATClient.java: HTTP-Anbindung an CAS.</li>\n<li>Robots.ts: Frontend-Aufrufe der API.</li>\n<li>RobotResourceTest.java und RobotServiceTest.java: Tests der Statuscodes, Validierung und Fehlerbehandlung.</li>\n</ul>","frontmatter":{"title":"","canonical":null},"fields":{"folders":["dogus","usermgt","development"],"delocalizedSlug":"/docs/dogus/usermgt/development/robots/","title":"Technische Konten: Architektur und API","pageType":"docs"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/de/docs/dogus/usermgt/development/robots/#technische-konten-architektur-und-api\">Technische Konten: Architektur und API</a></p>\n<ul>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#aufbau-und-zust%C3%A4ndigkeiten\">Aufbau und Zuständigkeiten</a></li>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#zugriff-und-basis-url\">Zugriff und Basis-URL</a></li>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#endpunkte-im-%C3%BCberblick\">Endpunkte im Überblick</a></li>\n<li>\n<p><a href=\"/de/docs/dogus/usermgt/development/robots/#konten-und-schl%C3%BCsselmetadaten-abfragen\">Konten und Schlüsselmetadaten abfragen</a></p>\n<ul>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#wie-die-liste-entsteht\">Wie die Liste entsteht</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/de/docs/dogus/usermgt/development/robots/#technisches-konto-anlegen\">Technisches Konto anlegen</a></p>\n<ul>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#ablauf-in-ldap-und-cas\">Ablauf in LDAP und CAS</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/de/docs/dogus/usermgt/development/robots/#zugriffsschl%C3%BCssel-erneuern\">Zugriffsschlüssel erneuern</a></p>\n<ul>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#ablauf-und-fehlerbehandlung\">Ablauf und Fehlerbehandlung</a></li>\n</ul>\n</li>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#technisches-konto-l%C3%B6schen\">Technisches Konto löschen</a></li>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#statuscodes-und-fehlerantworten\">Statuscodes und Fehlerantworten</a></li>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#interne-cas-requests\">Interne CAS-Requests</a></li>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#grenzen-und-hinweise-f%C3%BCr-integrationen\">Grenzen und Hinweise für Integrationen</a></li>\n<li><a href=\"/de/docs/dogus/usermgt/development/robots/#relevante-quelltexte-und-tests\">Relevante Quelltexte und Tests</a></li>\n</ul>\n</li>\n</ul>"},"allMarkdownRemark":{"edges":[{"node":{"fields":{"slug":"/docs/development/bash-guideline.de/","delocalizedSlug":"/docs/development/bash-guideline/","title":"Bash-Skript-Richtlinie","folders":["development"],"pageType":"docs","delocalizedElement":"bash-guideline"}}},{"node":{"fields":{"slug":"/docs/development/goss.de/","delocalizedSlug":"/docs/development/goss/","title":"Goss Spec","folders":["development"],"pageType":"docs","delocalizedElement":"goss"}}},{"node":{"fields":{"slug":"/docs/development/dogu-creation.de/","delocalizedSlug":"/docs/development/dogu-creation/","title":"Wie man ein Dogu erstellt","folders":["development"],"pageType":"docs","delocalizedElement":"dogu-creation"}}},{"node":{"fields":{"slug":"/docs/development/image-build.de/","delocalizedSlug":"/docs/development/image-build/","title":"Wie man ein CES-Image erstellt","folders":["development"],"pageType":"docs","delocalizedElement":"image-build"}}},{"node":{"fields":{"slug":"/docs/dogus/dogu-configuration.de/","delocalizedSlug":"/docs/dogus/dogu-configuration/","title":"Dogu-Konfiguration","folders":["dogus"],"pageType":"docs","delocalizedElement":"dogu-configuration"}}},{"node":{"fields":{"slug":"/docs/system-components/ubuntu_upgrade.de/","delocalizedSlug":"/docs/system-components/ubuntu_upgrade/","title":"Upgrade von Ubuntu 20.04 auf 24.04","folders":["system-components"],"pageType":"docs","delocalizedElement":"ubuntu_upgrade"}}},{"node":{"fields":{"slug":"/docs/dogus/admin/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/admin/CHANGELOG/","title":"Changelog","folders":["dogus","admin"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/admin/README.de/","delocalizedSlug":"/docs/dogus/admin/README/","title":"Readme","folders":["dogus","admin"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/backup/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/backup/CHANGELOG/","title":"Backup & Restore Changelog","folders":["dogus","backup"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/backup/README.de/","delocalizedSlug":"/docs/dogus/backup/README/","title":"Readme","folders":["dogus","backup"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/backup-watcher/development.de/","delocalizedSlug":"/docs/dogus/backup-watcher/development/","title":"Development","folders":["dogus","backup-watcher"],"pageType":"docs","delocalizedElement":"development"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/baseline/CHANGELOG/","title":"Baseline Changelog","folders":["dogus","baseline"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/README.de/","delocalizedSlug":"/docs/dogus/baseline/README/","title":"Readme","folders":["dogus","baseline"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/getting_started.de/","delocalizedSlug":"/docs/dogus/baseline/getting_started/","title":"Entwicklung","folders":["dogus","baseline"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/cas/CHANGELOG/","title":"CAS Changelog","folders":["dogus","cas"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/cas_developer_guide.de/","delocalizedSlug":"/docs/dogus/cas/cas_developer_guide/","title":"Entwicklungen am CAS","folders":["dogus","cas"],"pageType":"docs","delocalizedElement":"cas_developer_guide"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/cockpit/CHANGELOG/","title":"Cockpit Changelog","folders":["dogus","cockpit"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/README.de/","delocalizedSlug":"/docs/dogus/cockpit/README/","title":"Readme","folders":["dogus","cockpit"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/README.de/","delocalizedSlug":"/docs/dogus/cas/README/","title":"Readme","folders":["dogus","cas"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/getting_started.de/","delocalizedSlug":"/docs/dogus/cockpit/getting_started/","title":"Getting Started","folders":["dogus","cockpit"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/easyredmine/CHANGELOG/","title":"Easy Redmine Changelog","folders":["dogus","easyredmine"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/README.de/","delocalizedSlug":"/docs/dogus/easyredmine/README/","title":"Readme","folders":["dogus","easyredmine"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/README.de/","delocalizedSlug":"/docs/dogus/grafana/README/","title":"Readme","folders":["dogus","grafana"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/grafana/CHANGELOG/","title":"Grafana Changelog","folders":["dogus","grafana"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/jenkins/CHANGELOG/","title":"Jenkins Changelog","folders":["dogus","jenkins"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/introduction.de/","delocalizedSlug":"/docs/introduction/","title":"Einleitung","folders":[],"pageType":"docs","delocalizedElement":"introduction"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/README.de/","delocalizedSlug":"/docs/dogus/jenkins/README/","title":"Readme","folders":["dogus","jenkins"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/getting_started.de/","delocalizedSlug":"/docs/dogus/jenkins/getting_started/","title":"Getting Started","folders":["dogus","jenkins"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/ldap/CHANGELOG/","title":"LDAP Changelog","folders":["dogus","ldap"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/README.de/","delocalizedSlug":"/docs/dogus/ldap/README/","title":"Readme","folders":["dogus","ldap"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/README.de/","delocalizedSlug":"/docs/dogus/nexus/README/","title":"Readme","folders":["dogus","nexus"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/getting_started.de/","delocalizedSlug":"/docs/dogus/nexus/getting_started/","title":"Getting Started","folders":["dogus","nexus"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/README.de/","delocalizedSlug":"/docs/dogus/nginx/README/","title":"Readme","folders":["dogus","nginx"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/plantuml/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/plantuml/CHANGELOG/","title":"Plantuml Changelog","folders":["dogus","plantuml"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/plantuml/README.de/","delocalizedSlug":"/docs/dogus/plantuml/README/","title":"Readme","folders":["dogus","plantuml"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/portainer/CHANGELOG/","title":"Portainer Changelog","folders":["dogus","portainer"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/README.de/","delocalizedSlug":"/docs/dogus/portainer/README/","title":"Readme","folders":["dogus","portainer"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/nexus/CHANGELOG/","title":"Nexus Repository OSS Changelog","folders":["dogus","nexus"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/README.de/","delocalizedSlug":"/docs/dogus/postfix/README/","title":"Readme","folders":["dogus","postfix"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/getting_started.de/","delocalizedSlug":"/docs/dogus/postfix/getting_started/","title":"Getting Started","folders":["dogus","postfix"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/postgresql/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/postgresql/CHANGELOG/","title":"PostgreSQL Changelog","folders":["dogus","postgresql"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/postfix/CHANGELOG/","title":"Postfix Changelog","folders":["dogus","postfix"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/nginx/CHANGELOG/","title":"Nginx Changelog","folders":["dogus","nginx"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/postgresql/README.de/","delocalizedSlug":"/docs/dogus/postgresql/README/","title":"Readme","folders":["dogus","postgresql"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/README.de/","delocalizedSlug":"/docs/dogus/redmine/README/","title":"Readme","folders":["dogus","redmine"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/redmine/CHANGELOG/","title":"Redmine Changelog","folders":["dogus","redmine"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/scm/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/scm/CHANGELOG/","title":"SCM-Manager Changelog","folders":["dogus","scm"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/scm/README.de/","delocalizedSlug":"/docs/dogus/scm/README/","title":"Readme","folders":["dogus","scm"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/smeagol/CHANGELOG/","title":"Changelog","folders":["dogus","smeagol"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/README.de/","delocalizedSlug":"/docs/dogus/smeagol/README/","title":"Readme","folders":["dogus","smeagol"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/architecture.de/","delocalizedSlug":"/docs/dogus/smeagol/architecture/","title":"Architektur","folders":["dogus","smeagol"],"pageType":"docs","delocalizedElement":"architecture"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/demo_content.de/","delocalizedSlug":"/docs/dogus/smeagol/demo_content/","title":"Demo-Inhalte","folders":["dogus","smeagol"],"pageType":"docs","delocalizedElement":"demo_content"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/README.de/","delocalizedSlug":"/docs/dogus/sonar/README/","title":"Readme","folders":["dogus","sonar"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/swaggerui/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/swaggerui/CHANGELOG/","title":"Swagger UI Changelog","folders":["dogus","swaggerui"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/sonar/CHANGELOG/","title":"SonarQube Changelog","folders":["dogus","sonar"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/swaggerui/README.de/","delocalizedSlug":"/docs/dogus/swaggerui/README/","title":"Readme","folders":["dogus","swaggerui"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/README.de/","delocalizedSlug":"/docs/dogus/teamscale/README/","title":"Readme","folders":["dogus","teamscale"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/teamscale/CHANGELOG/","title":"Teamscale Changelog","folders":["dogus","teamscale"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/getting_started.de/","delocalizedSlug":"/docs/dogus/teamscale/getting_started/","title":"Getting Started","folders":["dogus","teamscale"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/README.de/","delocalizedSlug":"/docs/dogus/usermgt/README/","title":"Readme","folders":["dogus","usermgt"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/usermgt/CHANGELOG/","title":"User Management Changelog","folders":["dogus","usermgt"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/getting_started.de/","delocalizedSlug":"/docs/dogus/usermgt/getting_started/","title":"Getting Started","folders":["dogus","usermgt"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/whitelabeling/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/whitelabeling/CHANGELOG/","title":"Whitelabeling Changelog","folders":["dogus","whitelabeling"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/backup-watcher/README.de/","delocalizedSlug":"/docs/system-components/backup-watcher/README/","title":"Readme","folders":["system-components","backup-watcher"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/system-components/backup-watcher/CHANGELOG.de/","delocalizedSlug":"/docs/system-components/backup-watcher/CHANGELOG/","title":"Changelog","folders":["system-components","backup-watcher"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/CHANGELOG.de/","delocalizedSlug":"/docs/system-components/ces-setup/CHANGELOG/","title":"Changelog","folders":["system-components","ces-setup"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/README.de/","delocalizedSlug":"/docs/system-components/ces-setup/README/","title":"Readme","folders":["system-components","ces-setup"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/ces-on-proxmox-hypervisor.de/","delocalizedSlug":"/docs/system-components/ces-setup/ces-on-proxmox-hypervisor/","title":"CES auf einem Proxmox Hypervisor betreiben","folders":["system-components","ces-setup"],"pageType":"docs","delocalizedElement":"ces-on-proxmox-hypervisor"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/getting_started.de/","delocalizedSlug":"/docs/system-components/ces-setup/getting_started/","title":"CES-Setup Dokumentation","folders":["system-components","ces-setup"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/README.de/","delocalizedSlug":"/docs/system-components/cesapp/README/","title":"Readme","folders":["system-components","cesapp"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/CHANGELOG.de/","delocalizedSlug":"/docs/system-components/cesappd/CHANGELOG/","title":"Changelog","folders":["system-components","cesappd"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/getting_started.de/","delocalizedSlug":"/docs/system-components/cesapp/getting_started/","title":"Getting-Started","folders":["system-components","cesapp"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/CHANGELOG.de/","delocalizedSlug":"/docs/system-components/cesapp/CHANGELOG/","title":"Changelog","folders":["system-components","cesapp"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/warp-menu/CHANGELOG.de/","delocalizedSlug":"/docs/system-components/warp-menu/CHANGELOG/","title":"Changelog","folders":["system-components","warp-menu"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/README.de/","delocalizedSlug":"/docs/system-components/cesappd/README/","title":"Readme","folders":["system-components","cesappd"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/system-components/warp-menu/README.de/","delocalizedSlug":"/docs/system-components/warp-menu/README/","title":"Readme","folders":["system-components","warp-menu"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/getting_started.de/","delocalizedSlug":"/docs/dogus/portainer/getting_started/","title":"Portainer Dokumentation","folders":["dogus","portainer"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/admin/development/integration-tests.de/","delocalizedSlug":"/docs/dogus/admin/development/integration-tests/","title":"Integrationstests","folders":["dogus","admin","development"],"pageType":"docs","delocalizedElement":"integration-tests"}}},{"node":{"fields":{"slug":"/docs/dogus/admin/development/setup_environment.de/","delocalizedSlug":"/docs/dogus/admin/development/setup_environment/","title":"Entwicklungsumgebung aufsetzen","folders":["dogus","admin","development"],"pageType":"docs","delocalizedElement":"setup_environment"}}},{"node":{"fields":{"slug":"/docs/dogus/backup/development/html_elements.de/","delocalizedSlug":"/docs/dogus/backup/development/html_elements/","title":"Html Elements","folders":["dogus","backup","development"],"pageType":"docs","delocalizedElement":"html_elements"}}},{"node":{"fields":{"slug":"/docs/dogus/backup/development/setup_integrationtests.de/","delocalizedSlug":"/docs/dogus/backup/development/setup_integrationtests/","title":"Setup für die Integrationstests","folders":["dogus","backup","development"],"pageType":"docs","delocalizedElement":"setup_integrationtests"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/development/error_guidelines.de/","delocalizedSlug":"/docs/dogus/baseline/development/error_guidelines/","title":"Richtlinien für die Behandlung von Fehlern im Baseline Tool","folders":["dogus","baseline","development"],"pageType":"docs","delocalizedElement":"error_guidelines"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/development/integration_test.de/","delocalizedSlug":"/docs/dogus/baseline/development/integration_test/","title":"Integration-Tests","folders":["dogus","baseline","development"],"pageType":"docs","delocalizedElement":"integration_test"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/development/start_with_example_data_in_ces.de/","delocalizedSlug":"/docs/dogus/baseline/development/start_with_example_data_in_ces/","title":"Baseline mit Beispieldaten im CES starten","folders":["dogus","baseline","development"],"pageType":"docs","delocalizedElement":"start_with_example_data_in_ces"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/operations/configure_credentials.de/","delocalizedSlug":"/docs/dogus/baseline/operations/configure_credentials/","title":"Konfiguration der Credentials","folders":["dogus","baseline","operations"],"pageType":"docs","delocalizedElement":"configure_credentials"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/operations/configure_dogu.de/","delocalizedSlug":"/docs/dogus/baseline/operations/configure_dogu/","title":"Konfiguration des Baseline-Dogus","folders":["dogus","baseline","operations"],"pageType":"docs","delocalizedElement":"configure_dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/app/README.de/","delocalizedSlug":"/docs/dogus/cas/app/README/","title":"Readme","folders":["dogus","cas","app"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Adjusting_CAS_code.de/","delocalizedSlug":"/docs/dogus/cas/development/Adjusting_CAS_code/","title":"Anpassung des CAS-Codes","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Adjusting_CAS_code"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Configuration_in_Standalone_App.de/","delocalizedSlug":"/docs/dogus/cas/development/Configuration_in_Standalone_App/","title":"Verwendung von Werten aus dem etcd in Standalone-App","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Configuration_in_Standalone_App"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Configure_external_KeyCloak.de/","delocalizedSlug":"/docs/dogus/cas/development/Configure_external_KeyCloak/","title":"KeyCloak für OIDC Testumgebung aufsetzen","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Configure_external_KeyCloak"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Create_Wiremock_Services_For_Tests.de/","delocalizedSlug":"/docs/dogus/cas/development/Create_Wiremock_Services_For_Tests/","title":"Wiremock für die von JUnit-Tests verwendete etcd-Registry erstellen","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Create_Wiremock_Services_For_Tests"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Service_Registry.de/","delocalizedSlug":"/docs/dogus/cas/development/Service_Registry/","title":"Service Registry","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Service_Registry"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Remote_Debugging.de/","delocalizedSlug":"/docs/dogus/cas/development/Remote_Debugging/","title":"Remote Debugging im lokalen CES","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Remote_Debugging"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Setup_Integrationtests.de/","delocalizedSlug":"/docs/dogus/cas/development/Setup_Integrationtests/","title":"Setup für die Integrationstests","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Setup_Integrationtests"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Upgrading_CAS.de/","delocalizedSlug":"/docs/dogus/cas/development/Upgrading_CAS/","title":"CAS aktualisieren","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Upgrading_CAS"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/develop_stage.de/","delocalizedSlug":"/docs/dogus/cas/development/develop_stage/","title":"Entwicklungsmodus","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"develop_stage"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/example_oidc_configuration.de/","delocalizedSlug":"/docs/dogus/cas/development/example_oidc_configuration/","title":"Beispiel-Konfiguration für delegierte Authentifizierung mit OIDC","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"example_oidc_configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/external_ldap_for_test_purpose.de/","delocalizedSlug":"/docs/dogus/cas/development/external_ldap_for_test_purpose/","title":"Einen externen LDAP anbinden am Beispiel des docker-sample-ldap","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"external_ldap_for_test_purpose"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/personal_access_tokens.de/","delocalizedSlug":"/docs/dogus/cas/development/personal_access_tokens/","title":"Entwicklerdokumentation: Personal Access Tokens","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"personal_access_tokens"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/update_theme.de/","delocalizedSlug":"/docs/dogus/cas/development/update_theme/","title":"Update des \"CES-Theme-Tailwind\" in den thymeleaf-templates","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"update_theme"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/Configure_OIDC_Provider.de/","delocalizedSlug":"/docs/dogus/cas/operations/Configure_OIDC_Provider/","title":"Konfiguration zur Verwendung eines OIDC Providers als Authentifizierungsquelle","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"Configure_OIDC_Provider"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/cas-login-limit.de/","delocalizedSlug":"/docs/dogus/cas/operations/cas-login-limit/","title":"Funktionen","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"cas-login-limit"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/customization_of_configurable_texts.de/","delocalizedSlug":"/docs/dogus/cas/operations/customization_of_configurable_texts/","title":"Anpassung von konfigurierbaren Texten","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"customization_of_configurable_texts"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/endpoint_accessToken.de/","delocalizedSlug":"/docs/dogus/cas/operations/endpoint_accessToken/","title":"Access Token","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"endpoint_accessToken"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/endpoint_authorize.de/","delocalizedSlug":"/docs/dogus/cas/operations/endpoint_authorize/","title":"Authorize","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"endpoint_authorize"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/endpoint_profile.de/","delocalizedSlug":"/docs/dogus/cas/operations/endpoint_profile/","title":"Profil","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"endpoint_profile"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/oauth_guide.de/","delocalizedSlug":"/docs/dogus/cas/operations/oauth_guide/","title":"CAS als OAuth/OIDC Provider benutzen","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"oauth_guide"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/password-management.de/","delocalizedSlug":"/docs/dogus/cas/operations/password-management/","title":"Passwort Management im CAS","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"password-management"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/two_factor_authentication.de/","delocalizedSlug":"/docs/dogus/cas/operations/two_factor_authentication/","title":"Zwei-Faktor-Authentifizierung","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"two_factor_authentication"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/development/Developers_Guide.de/","delocalizedSlug":"/docs/dogus/cockpit/development/Developers_Guide/","title":"Entwickler-Guide","folders":["dogus","cockpit","development"],"pageType":"docs","delocalizedElement":"Developers_Guide"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/development/Pinned_Dashboard.de/","delocalizedSlug":"/docs/dogus/cockpit/development/Pinned_Dashboard/","title":"Pinned Dashboard","folders":["dogus","cockpit","development"],"pageType":"docs","delocalizedElement":"Pinned_Dashboard"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/development/Setup_Integrationtest.de/","delocalizedSlug":"/docs/dogus/cockpit/development/Setup_Integrationtest/","title":"Setup für die Integrationstests","folders":["dogus","cockpit","development"],"pageType":"docs","delocalizedElement":"Setup_Integrationtest"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/operations/Configure_Dogu.de/","delocalizedSlug":"/docs/dogus/cockpit/operations/Configure_Dogu/","title":"Konfiguration des Cockpit-Dogu","folders":["dogus","cockpit","operations"],"pageType":"docs","delocalizedElement":"Configure_Dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/operations/Install_Dogu.de/","delocalizedSlug":"/docs/dogus/cockpit/operations/Install_Dogu/","title":"Installation des Cockpit-Dogu","folders":["dogus","cockpit","operations"],"pageType":"docs","delocalizedElement":"Install_Dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/development/environment.de/","delocalizedSlug":"/docs/dogus/easyredmine/development/environment/","title":"Lokale Entwicklungsumgebung","folders":["dogus","easyredmine","development"],"pageType":"docs","delocalizedElement":"environment"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/development/gui_testing.de/","delocalizedSlug":"/docs/dogus/easyredmine/development/gui_testing/","title":"Gui-testing Easy Redmine","folders":["dogus","easyredmine","development"],"pageType":"docs","delocalizedElement":"gui_testing"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/development/shell_testing.de/","delocalizedSlug":"/docs/dogus/easyredmine/development/shell_testing/","title":"Shell-Tests","folders":["dogus","easyredmine","development"],"pageType":"docs","delocalizedElement":"shell_testing"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/operations/1_administrators_checklist.de/","delocalizedSlug":"/docs/dogus/easyredmine/operations/1_administrators_checklist/","title":"1. Checkliste für die Administration","folders":["dogus","easyredmine","operations"],"pageType":"docs","delocalizedElement":"1_administrators_checklist"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/operations/import_project_templates.de/","delocalizedSlug":"/docs/dogus/easyredmine/operations/import_project_templates/","title":"Projektvorlagen-Import","folders":["dogus","easyredmine","operations"],"pageType":"docs","delocalizedElement":"import_project_templates"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/operations/logging.de/","delocalizedSlug":"/docs/dogus/easyredmine/operations/logging/","title":"Logging","folders":["dogus","easyredmine","operations"],"pageType":"docs","delocalizedElement":"logging"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/development/grafana_carp.de/","delocalizedSlug":"/docs/dogus/grafana/development/grafana_carp/","title":"Der Grafana-CARP","folders":["dogus","grafana","development"],"pageType":"docs","delocalizedElement":"grafana_carp"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/development/local_development.de/","delocalizedSlug":"/docs/dogus/grafana/development/local_development/","title":"Lokale Entwicklung am Grafana-Dogu im k8s-ecosystem","folders":["dogus","grafana","development"],"pageType":"docs","delocalizedElement":"local_development"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/operations/configuration.de/","delocalizedSlug":"/docs/dogus/grafana/operations/configuration/","title":"Konfiguration des Grafana-Dogus","folders":["dogus","grafana","operations"],"pageType":"docs","delocalizedElement":"configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/operations/dashboard_provision.de/","delocalizedSlug":"/docs/dogus/grafana/operations/dashboard_provision/","title":"Dashboard automatisch provisionieren","folders":["dogus","grafana","operations"],"pageType":"docs","delocalizedElement":"dashboard_provision"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/operations/default_configuration.de/","delocalizedSlug":"/docs/dogus/easyredmine/operations/default_configuration/","title":"Konfiguration bei Dogu-Start ausbringen","folders":["dogus","easyredmine","operations"],"pageType":"docs","delocalizedElement":"default_configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/operations/important_remarks.de/","delocalizedSlug":"/docs/dogus/grafana/operations/important_remarks/","title":"Wichtige Bemerkungen","folders":["dogus","grafana","operations"],"pageType":"docs","delocalizedElement":"important_remarks"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/development/plugin_blocklist.de/","delocalizedSlug":"/docs/dogus/jenkins/development/plugin_blocklist/","title":"Plugin-Blockliste","folders":["dogus","jenkins","development"],"pageType":"docs","delocalizedElement":"plugin_blocklist"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/development/plugin_compatibility.de/","delocalizedSlug":"/docs/dogus/jenkins/development/plugin_compatibility/","title":"Plugin-Kompatibilitätsliste","folders":["dogus","jenkins","development"],"pageType":"docs","delocalizedElement":"plugin_compatibility"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/development/plugin_test.de/","delocalizedSlug":"/docs/dogus/jenkins/development/plugin_test/","title":"Plugin-Kompatibilität testen","folders":["dogus","jenkins","development"],"pageType":"docs","delocalizedElement":"plugin_test"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/development/upgrade_guide.de/","delocalizedSlug":"/docs/dogus/jenkins/development/upgrade_guide/","title":"Basis-Image aktualisieren","folders":["dogus","jenkins","development"],"pageType":"docs","delocalizedElement":"upgrade_guide"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/Additional_SSL_certificates.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/Additional_SSL_certificates/","title":"Zusätzliche SSL-Zertifikate","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"Additional_SSL_certificates"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/Building_with_custom_Java.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/Building_with_custom_Java/","title":"Bauen mit speziellen OpenJDK-Versionen","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"Building_with_custom_Java"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/Install_Jenkins.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/Install_Jenkins/","title":"Installation des Jenkins-Dogu","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"Install_Jenkins"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/Post_initialization_scripts.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/Post_initialization_scripts/","title":"Post-Initialisierungs-Skripte","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"Post_initialization_scripts"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/TCP_agent_listener_port.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/TCP_agent_listener_port/","title":"TCP Agent Listener Port","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"TCP_agent_listener_port"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/additional_configuration.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/additional_configuration/","title":"Weitere Konfigurationen","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"additional_configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/azure_agents.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/azure_agents/","title":"Einrichten von Jenkins-Agents in der Azure-Cloud","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"azure_agents"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/configure_timezone.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/configure_timezone/","title":"Zeitzone konfigurieren","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"configure_timezone"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/configure_log_level.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/configure_log_level/","title":"Log-Level konfigurieren","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"configure_log_level"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/development/password_policy.de/","delocalizedSlug":"/docs/dogus/ldap/development/password_policy/","title":"Wichtige Hinweise zur Installation der Password-Policy","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"password_policy"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/development/development_process.de/","delocalizedSlug":"/docs/dogus/ldap/development/development_process/","title":"Entwicklungsprozess (Dogu + Komponente)","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"development_process"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/kubernetes_native_builds.de/","delocalizedSlug":"/docs/dogus/jenkins/operations/kubernetes_native_builds/","title":"Kubernetes-native Builds","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"kubernetes_native_builds"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/development/root_password_rotation.de/","delocalizedSlug":"/docs/dogus/ldap/development/root_password_rotation/","title":"Rotation des LDAP-Root-Passworts","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"root_password_rotation"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/development/test_ldap_as_initial_install.de/","delocalizedSlug":"/docs/dogus/ldap/development/test_ldap_as_initial_install/","title":"Lokale LDAP-Version als Initial-Installation testen","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"test_ldap_as_initial_install"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/operations/ldap_migration_dogu_to_component.de/","delocalizedSlug":"/docs/dogus/ldap/operations/ldap_migration_dogu_to_component/","title":"LDAP-Migration vom Dogu zur Komponente","folders":["dogus","ldap","operations"],"pageType":"docs","delocalizedElement":"ldap_migration_dogu_to_component"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/operations/mail_after_changed_password.de/","delocalizedSlug":"/docs/dogus/ldap/operations/mail_after_changed_password/","title":"E-Mail-Versand nach Änderung eines Nutzer-Passworts","folders":["dogus","ldap","operations"],"pageType":"docs","delocalizedElement":"mail_after_changed_password"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/development/review.de/","delocalizedSlug":"/docs/dogus/ldap/development/review/","title":"Wichtig zu beachten beim Review des LDAP-Dogus","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"review"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/operations/password-policy.de/","delocalizedSlug":"/docs/dogus/ldap/operations/password-policy/","title":"Password-Richtlinien","folders":["dogus","ldap","operations"],"pageType":"docs","delocalizedElement":"password-policy"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/operations/ldap_component_installation.de/","delocalizedSlug":"/docs/dogus/ldap/operations/ldap_component_installation/","title":"LDAP-Komponente installieren und konfigurieren","folders":["dogus","ldap","operations"],"pageType":"docs","delocalizedElement":"ldap_component_installation"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/operations/Configure_Service_Accounts.de/","delocalizedSlug":"/docs/dogus/nexus/operations/Configure_Service_Accounts/","title":"Konfiguration von Service Accounts","folders":["dogus","nexus","operations"],"pageType":"docs","delocalizedElement":"Configure_Service_Accounts"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/operations/preconfigure_repositories.de/","delocalizedSlug":"/docs/dogus/nexus/operations/preconfigure_repositories/","title":"Preconfigure Repositories","folders":["dogus","nexus","operations"],"pageType":"docs","delocalizedElement":"preconfigure_repositories"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/operations/preconfigure_repository_data.de/","delocalizedSlug":"/docs/dogus/nexus/operations/preconfigure_repository_data/","title":"Preconfigure Repository Data","folders":["dogus","nexus","operations"],"pageType":"docs","delocalizedElement":"preconfigure_repository_data"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/operations/predefined_nexus_entities.de/","delocalizedSlug":"/docs/dogus/nexus/operations/predefined_nexus_entities/","title":"Vorkonfigurierte Nexus Settings","folders":["dogus","nexus","operations"],"pageType":"docs","delocalizedElement":"predefined_nexus_entities"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/dev/ces-theme.de/","delocalizedSlug":"/docs/dogus/nginx/dev/ces-theme/","title":"CES-Theme-Integration","folders":["dogus","nginx","dev"],"pageType":"docs","delocalizedElement":"ces-theme"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/development/dev.de/","delocalizedSlug":"/docs/dogus/nexus/development/dev/","title":"Dev","folders":["dogus","nexus","development"],"pageType":"docs","delocalizedElement":"dev"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/dev/client-certificates.de/","delocalizedSlug":"/docs/dogus/nginx/dev/client-certificates/","title":"Mutual TLS mit Client Zertifikaten","folders":["dogus","nginx","dev"],"pageType":"docs","delocalizedElement":"client-certificates"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/dev/integration_tests.de/","delocalizedSlug":"/docs/dogus/nginx/dev/integration_tests/","title":"Aufsetzen der Integration Tests","folders":["dogus","nginx","dev"],"pageType":"docs","delocalizedElement":"integration_tests"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/dev/support_entries_in_warp_menu.de/","delocalizedSlug":"/docs/dogus/nginx/dev/support_entries_in_warp_menu/","title":"Support-Einträge für das Warp-Menü konfigurieren","folders":["dogus","nginx","dev"],"pageType":"docs","delocalizedElement":"support_entries_in_warp_menu"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/operations/proxy_buffering.de/","delocalizedSlug":"/docs/dogus/nginx/operations/proxy_buffering/","title":"Request Buffering","folders":["dogus","nginx","operations"],"pageType":"docs","delocalizedElement":"proxy_buffering"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/operations/Add_Portainer_Endpoint.de/","delocalizedSlug":"/docs/dogus/portainer/operations/Add_Portainer_Endpoint/","title":"Konfigurieren eines Portainer-Endpoints via Dogu-Config","folders":["dogus","portainer","operations"],"pageType":"docs","delocalizedElement":"Add_Portainer_Endpoint"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/operations/Configure_Portainer.de/","delocalizedSlug":"/docs/dogus/portainer/operations/Configure_Portainer/","title":"Konfiguration von Portainer","folders":["dogus","portainer","operations"],"pageType":"docs","delocalizedElement":"Configure_Portainer"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/operations/Install_Portainer.de/","delocalizedSlug":"/docs/dogus/portainer/operations/Install_Portainer/","title":"Installation des Portainer-Dogu","folders":["dogus","portainer","operations"],"pageType":"docs","delocalizedElement":"Install_Portainer"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/operations/User_Roles.de/","delocalizedSlug":"/docs/dogus/portainer/operations/User_Roles/","title":"Berechtigungen & Rollen","folders":["dogus","portainer","operations"],"pageType":"docs","delocalizedElement":"User_Roles"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/development/Developers_Guide.de/","delocalizedSlug":"/docs/dogus/postfix/development/Developers_Guide/","title":"Entwickler-Guide","folders":["dogus","postfix","development"],"pageType":"docs","delocalizedElement":"Developers_Guide"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/development/Send_Mails_locally.de/","delocalizedSlug":"/docs/dogus/postfix/development/Send_Mails_locally/","title":"Lokaler Mailversand","folders":["dogus","postfix","development"],"pageType":"docs","delocalizedElement":"Send_Mails_locally"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/operations/Configure_Dogu.de/","delocalizedSlug":"/docs/dogus/postfix/operations/Configure_Dogu/","title":"Konfiguration des Postfix-Dogu","folders":["dogus","postfix","operations"],"pageType":"docs","delocalizedElement":"Configure_Dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/operations/Install_Postfix.de/","delocalizedSlug":"/docs/dogus/postfix/operations/Install_Postfix/","title":"Installation des Postfix-Dogu","folders":["dogus","postfix","operations"],"pageType":"docs","delocalizedElement":"Install_Postfix"}}},{"node":{"fields":{"slug":"/docs/dogus/postgresql/development/upgrade_dogu.de/","delocalizedSlug":"/docs/dogus/postgresql/development/upgrade_dogu/","title":"Upgrade des PostgreSQL-Dogus","folders":["dogus","postgresql","development"],"pageType":"docs","delocalizedElement":"upgrade_dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/Setup_Integrationtests.de/","delocalizedSlug":"/docs/dogus/redmine/development/Setup_Integrationtests/","title":"Setup für die Integrationstests","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"Setup_Integrationtests"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/cas_plugin_and_session_store.de/","delocalizedSlug":"/docs/dogus/redmine/development/cas_plugin_and_session_store/","title":"Entwicklerhinweise zum CAS-Plugin und dem Session-Store","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"cas_plugin_and_session_store"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/shell_testing.de/","delocalizedSlug":"/docs/dogus/redmine/development/shell_testing/","title":"Shell-Tests","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"shell_testing"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/upgrade_dogu.de/","delocalizedSlug":"/docs/dogus/redmine/development/upgrade_dogu/","title":"Upgrade des Redmine-Dogus","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"upgrade_dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/test_air-gapped.de/","delocalizedSlug":"/docs/dogus/redmine/development/test_air-gapped/","title":"Test, ob das Dogu in einer Air-Gapped-Umgebung funktionieren würde","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"test_air-gapped"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/operations/change_gravatar_settings.de/","delocalizedSlug":"/docs/dogus/redmine/operations/change_gravatar_settings/","title":"Änderung der Gravatar-Einstellungen","folders":["dogus","redmine","operations"],"pageType":"docs","delocalizedElement":"change_gravatar_settings"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/operations/redmine_plugins.de/","delocalizedSlug":"/docs/dogus/redmine/operations/redmine_plugins/","title":"Dateiverwaltung von Redmine-Plugins","folders":["dogus","redmine","operations"],"pageType":"docs","delocalizedElement":"redmine_plugins"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/development/Setup_Integrationtest.de/","delocalizedSlug":"/docs/dogus/smeagol/development/Setup_Integrationtest/","title":"Setup für die Integrationstests","folders":["dogus","smeagol","development"],"pageType":"docs","delocalizedElement":"Setup_Integrationtest"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/development/start_and_debug_locally.de/","delocalizedSlug":"/docs/dogus/smeagol/development/start_and_debug_locally/","title":"Smeagol lokal starten","folders":["dogus","smeagol","development"],"pageType":"docs","delocalizedElement":"start_and_debug_locally"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/carp_develop_stage.de/","delocalizedSlug":"/docs/dogus/sonar/development/carp_develop_stage/","title":"CARP Entwicklungsmodus","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"carp_develop_stage"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/carp_remote_debugging.de/","delocalizedSlug":"/docs/dogus/sonar/development/carp_remote_debugging/","title":"CARP-Remote-Debugging","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"carp_remote_debugging"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/operations/default_configuration.de/","delocalizedSlug":"/docs/dogus/redmine/operations/default_configuration/","title":"Konfiguration bei Dogu-Start ausbringen","folders":["dogus","redmine","operations"],"pageType":"docs","delocalizedElement":"default_configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/community-branch-plugin.de/","delocalizedSlug":"/docs/dogus/sonar/development/community-branch-plugin/","title":"SonarQube Community Branch Plugin","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"community-branch-plugin"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/developing.de/","delocalizedSlug":"/docs/dogus/sonar/development/developing/","title":"Das SonarQube-Dogu entwickeln","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"developing"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/scanning_code_the_easy_way.de/","delocalizedSlug":"/docs/dogus/sonar/development/scanning_code_the_easy_way/","title":"Einfacher mit Sonar-scanner-cli scannen","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"scanning_code_the_easy_way"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/operations/import_quality_profile.de/","delocalizedSlug":"/docs/dogus/sonar/operations/import_quality_profile/","title":"Funktionen","folders":["dogus","sonar","operations"],"pageType":"docs","delocalizedElement":"import_quality_profile"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/operations/global_permission.de/","delocalizedSlug":"/docs/dogus/sonar/operations/global_permission/","title":"Globale Berechtigungen","folders":["dogus","sonar","operations"],"pageType":"docs","delocalizedElement":"global_permission"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/operations/permission_template.de/","delocalizedSlug":"/docs/dogus/sonar/operations/permission_template/","title":"Permission template","folders":["dogus","sonar","operations"],"pageType":"docs","delocalizedElement":"permission_template"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/sonar-cas-plugin/CHANGELOG.de/","delocalizedSlug":"/docs/dogus/sonar/sonar-cas-plugin/CHANGELOG/","title":"Changelog","folders":["dogus","sonar","sonar-cas-plugin"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/sonar-cas-plugin/README.de/","delocalizedSlug":"/docs/dogus/sonar/sonar-cas-plugin/README/","title":"Readme","folders":["dogus","sonar","sonar-cas-plugin"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/sonar-cas-plugin/architecture.de/","delocalizedSlug":"/docs/dogus/sonar/sonar-cas-plugin/architecture/","title":"Architektur","folders":["dogus","sonar","sonar-cas-plugin"],"pageType":"docs","delocalizedElement":"architecture"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/sonar-cas-plugin/development.de/","delocalizedSlug":"/docs/dogus/sonar/sonar-cas-plugin/development/","title":"Entwicklung des SonarQube-CAS-Plugins","folders":["dogus","sonar","sonar-cas-plugin"],"pageType":"docs","delocalizedElement":"development"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/understanding_sonarcarp.de/","delocalizedSlug":"/docs/dogus/sonar/development/understanding_sonarcarp/","title":"Die Wirkweise von Sonarcarp verstehen","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"understanding_sonarcarp"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/sonar-cas-plugin/pluginConfiguration.de/","delocalizedSlug":"/docs/dogus/sonar/sonar-cas-plugin/pluginConfiguration/","title":"Plugin-Konfiguration","folders":["dogus","sonar","sonar-cas-plugin"],"pageType":"docs","delocalizedElement":"pluginConfiguration"}}},{"node":{"fields":{"slug":"/docs/dogus/swaggerui/development/local_setup.de/","delocalizedSlug":"/docs/dogus/swaggerui/development/local_setup/","title":"Aufsetzen des Swagger-UI Dogu","folders":["dogus","swaggerui","development"],"pageType":"docs","delocalizedElement":"local_setup"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/operations/Install_Teamscale.de/","delocalizedSlug":"/docs/dogus/teamscale/operations/Install_Teamscale/","title":"Installation des Teamscale-Dogu","folders":["dogus","teamscale","operations"],"pageType":"docs","delocalizedElement":"Install_Teamscale"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/operations/dogu_features.de/","delocalizedSlug":"/docs/dogus/teamscale/operations/dogu_features/","title":"Features des Teamscale-Dogus","folders":["dogus","teamscale","operations"],"pageType":"docs","delocalizedElement":"dogu_features"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/operations/pat_proxy.de/","delocalizedSlug":"/docs/dogus/teamscale/operations/pat_proxy/","title":"PAT-Proxy","folders":["dogus","teamscale","operations"],"pageType":"docs","delocalizedElement":"pat_proxy"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/development/Developers_Guide.de/","delocalizedSlug":"/docs/dogus/usermgt/development/Developers_Guide/","title":"Usermgt entwickeln","folders":["dogus","usermgt","development"],"pageType":"docs","delocalizedElement":"Developers_Guide"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/development/api.de/","delocalizedSlug":"/docs/dogus/usermgt/development/api/","title":"Api-Beschreibung","folders":["dogus","usermgt","development"],"pageType":"docs","delocalizedElement":"api"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/development/configure_integration_tests.de/","delocalizedSlug":"/docs/dogus/usermgt/development/configure_integration_tests/","title":"Konfiguration für Integrations-Tests","folders":["dogus","usermgt","development"],"pageType":"docs","delocalizedElement":"configure_integration_tests"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/operations/upgrade_teamscale.de/","delocalizedSlug":"/docs/dogus/teamscale/operations/upgrade_teamscale/","title":"Upgrade von Teamscale","folders":["dogus","teamscale","operations"],"pageType":"docs","delocalizedElement":"upgrade_teamscale"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/development/robots.de/","delocalizedSlug":"/docs/dogus/usermgt/development/robots/","title":"Technische Konten: Architektur und API","folders":["dogus","usermgt","development"],"pageType":"docs","delocalizedElement":"robots"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/operations/create_users_synced.de/","delocalizedSlug":"/docs/dogus/usermgt/operations/create_users_synced/","title":"Create Users Synced","folders":["dogus","usermgt","operations"],"pageType":"docs","delocalizedElement":"create_users_synced"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/operations/password-policy.de/","delocalizedSlug":"/docs/dogus/usermgt/operations/password-policy/","title":"Passwort Policy","folders":["dogus","usermgt","operations"],"pageType":"docs","delocalizedElement":"password-policy"}}},{"node":{"fields":{"slug":"/docs/dogus/whitelabeling/development/setup_environment.de/","delocalizedSlug":"/docs/dogus/whitelabeling/development/setup_environment/","title":"Umgebung einrichten","folders":["dogus","whitelabeling","development"],"pageType":"docs","delocalizedElement":"setup_environment"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/operations/Configure_Unattended_Upgrades.de/","delocalizedSlug":"/docs/system-components/ces-setup/operations/Configure_Unattended_Upgrades/","title":"Konfiguration von unbeaufsichtigten Upgrades","folders":["system-components","ces-setup","operations"],"pageType":"docs","delocalizedElement":"Configure_Unattended_Upgrades"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/operations/Import_Projects.de/","delocalizedSlug":"/docs/system-components/ces-setup/operations/Import_Projects/","title":"Projekte beim CES-Setup importieren","folders":["system-components","ces-setup","operations"],"pageType":"docs","delocalizedElement":"Import_Projects"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/access_structure.de/","delocalizedSlug":"/docs/system-components/cesapp/development/access_structure/","title":"Zugriffsstruktur","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"access_structure"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/operations/setup-json.de/","delocalizedSlug":"/docs/system-components/ces-setup/operations/setup-json/","title":"Verwendung der setup.json","folders":["system-components","ces-setup","operations"],"pageType":"docs","delocalizedElement":"setup-json"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/operations/csv-import.de/","delocalizedSlug":"/docs/dogus/usermgt/operations/csv-import/","title":"CSV IMPORT","folders":["dogus","usermgt","operations"],"pageType":"docs","delocalizedElement":"csv-import"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/cesapp_cmd_helptext_styleguide.de/","delocalizedSlug":"/docs/system-components/cesapp/development/cesapp_cmd_helptext_styleguide/","title":"Styleguide für die Ausgabe von Hilfetexten","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"cesapp_cmd_helptext_styleguide"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/dogu_json_upgrade_v2.de/","delocalizedSlug":"/docs/system-components/cesapp/development/dogu_json_upgrade_v2/","title":"Upgrade einer dogu.json von v1 zu v2","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"dogu_json_upgrade_v2"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/generating_mocks.de/","delocalizedSlug":"/docs/system-components/cesapp/development/generating_mocks/","title":"Erstellen von Mocks","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"generating_mocks"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/major_release.de/","delocalizedSlug":"/docs/system-components/cesapp/development/major_release/","title":"cesapp in einer neuen Major-Version veröffentlichen","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"major_release"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/alert_mail.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/alert_mail/","title":"E-Mail-Benachrichtigung bei fehlgeschlagenen Prozessen","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"alert_mail"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/backup.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/backup/","title":"Befehl: cesapp backup","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"backup"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/blueprint_upgrade.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/blueprint_upgrade/","title":"Upgrade des CES mit Blueprints","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"blueprint_upgrade"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/build.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/build/","title":"Befehl: cesapp build","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"build"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/command.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/command/","title":"Befehl: cesapp command","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"command"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/debug_mode.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/debug_mode/","title":"Befehl: `cesapp debug-mode`","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"debug_mode"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/detail.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/detail/","title":"Befehl cesapp detail","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"detail"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/running_tests.de/","delocalizedSlug":"/docs/system-components/cesapp/development/running_tests/","title":"Ausführen von Tests","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"running_tests"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/detailremote.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/detailremote/","title":"Befehl: cesapp detailremote","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"detailremote"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/edit_config.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/edit_config/","title":"Befehl: cesapp edit-config","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"edit_config"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/dogu-upgrade.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/dogu-upgrade/","title":"Dogu-Upgrades","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"dogu-upgrade"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/healthy.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/healthy/","title":"Befehl: cesapp healthy","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"healthy"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/install.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/install/","title":"Befehl: cesapp install","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"install"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/instance.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/instance/","title":"Befehl: cesapp instance","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"instance"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/list.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/list/","title":"Befehl: cesapp list","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"list"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/list-remote.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/list-remote/","title":"Befehl: cesapp list-remote","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"list-remote"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/list_upgrades.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/list_upgrades/","title":"Befehl: cesapp list-upgrades","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"list_upgrades"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/pull.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/pull/","title":"Befehl: cesapp pull","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"pull"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/login.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/login/","title":"Befehl: cesapp login","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"login"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/purge.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/purge/","title":"Befehl: cesapp purge","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"purge"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/push.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/push/","title":"Befehl: cesapp push","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"push"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/reconfigure.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/reconfigure/","title":"Befehl: cesapp reconfigure","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"reconfigure"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/recreate.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/recreate/","title":"Befehl: cesapp recreate","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"recreate"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/remove-backups.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/remove-backups/","title":"Befehl cesapp remove-backups","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"remove-backups"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/remove-backups_list-policies.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/remove-backups_list-policies/","title":"Befehl: `cesapp remove-backups list-policies`","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"remove-backups_list-policies"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/restart.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/restart/","title":"Befehl: cesapp restart","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"restart"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/restore.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/restore/","title":"Befehl: cesapp restore","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"restore"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/start.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/start/","title":"Befehl: cesapp start","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"start"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/stop.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/stop/","title":"Befehl: cesapp stop","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"stop"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/switch-namespace.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/switch-namespace/","title":"Befehl: cesapp switch-namespace","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"switch-namespace"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/unregister.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/unregister/","title":"Befehl: cesapp unregister","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"unregister"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/upgrade.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/upgrade/","title":"Befehl: cesapp upgrade","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"upgrade"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/verify.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/verify/","title":"Befehl: cesapp verify","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"verify"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/development/development.de/","delocalizedSlug":"/docs/system-components/cesappd/development/development/","title":"Entwicklung von cesappd","folders":["system-components","cesappd","development"],"pageType":"docs","delocalizedElement":"development"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/operations/architecture.de/","delocalizedSlug":"/docs/system-components/cesappd/operations/architecture/","title":"Architektur des cesappd","folders":["system-components","cesappd","operations"],"pageType":"docs","delocalizedElement":"architecture"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/operations/dogu_authentication.de/","delocalizedSlug":"/docs/system-components/cesappd/operations/dogu_authentication/","title":"Dogu Authentifizierung","folders":["system-components","cesappd","operations"],"pageType":"docs","delocalizedElement":"dogu_authentication"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/migrating.de/","delocalizedSlug":"/docs/system-components/cesapp/operations/migrating/","title":"Migration von Cesapp-Versionen","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"migrating"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/operations/firewall.de/","delocalizedSlug":"/docs/system-components/cesappd/operations/firewall/","title":"Firewall-Einrichtung für Cesappd","folders":["system-components","cesappd","operations"],"pageType":"docs","delocalizedElement":"firewall"}}},{"node":{"fields":{"slug":"/docs/system-components/etcd/development/maintenance_mode.de/","delocalizedSlug":"/docs/system-components/etcd/development/maintenance_mode/","title":"Wartungsmodus","folders":["system-components","etcd","development"],"pageType":"docs","delocalizedElement":"maintenance_mode"}}},{"node":{"fields":{"slug":"/docs/system-components/etcd/development/etcd_registry_structure.de/","delocalizedSlug":"/docs/system-components/etcd/development/etcd_registry_structure/","title":"Etcd-Registy-Struktur","folders":["system-components","etcd","development"],"pageType":"docs","delocalizedElement":"etcd_registry_structure"}}}]},"site":{"siteMetadata":{"feedbackForumUrl":"https://community.cloudogu.com/c/cloudogu-ecosystem/ecosystem-docs/43"}}},"pageContext":{"slug":"/docs/dogus/usermgt/development/robots/","pageType":"docs","locale":"de","hrefLang":"de-DE","originalPath":"/docs/dogus/usermgt/development/robots/","dateFormat":"DD.MM.YYYY"}},"staticQueryHashes":["1239077767","1958541892","1958541892","3280999885","3280999885","3963778127","914906612"]}