{"componentChunkName":"component---src-templates-doc-page-tsx","path":"/en/docs/dogus/usermgt/development/robots/","result":{"data":{"markdownRemark":{"html":"<h2 id=\"technical-accounts-architecture-and-api\" style=\"position:relative;\"><a href=\"#technical-accounts-architecture-and-api\" aria-label=\"technical accounts architecture and 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>Technical accounts: architecture and API</h2>\n<p>Technical accounts enable automated access to the Cloudogu EcoSystem independently of an employee's personal account. The feature connects an LDAP user account with an access token in CAS. In the source code and API paths, technical accounts are referred to as <code class=\"language-text\">robots</code>.</p>\n<p>This document describes the current implementation and the API for integrations. For instructions on using the interface, see Technical accounts.</p>\n<h3 id=\"components-and-responsibilities\" style=\"position:relative;\"><a href=\"#components-and-responsibilities\" aria-label=\"components and responsibilities 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>Components and responsibilities</h3>\n<table>\n<thead>\n<tr>\n<th>Component</th>\n<th>Responsibility</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">RobotResource</code></td>\n<td>Exposes the HTTP endpoints, checks permissions, and translates service errors into HTTP responses.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">RobotService</code></td>\n<td>Connects LDAP accounts with CAS tokens and manages creation, renewal, and deletion.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">PATClient</code></td>\n<td>Sends HTTP requests to the CAS PAT API.</td>\n</tr>\n<tr>\n<td>LDAP</td>\n<td>Stores the technical user account with the attribute <code class=\"language-text\">technical=TRUE</code>.</td>\n</tr>\n<tr>\n<td>CAS</td>\n<td>Manages access tokens and their metadata.</td>\n</tr>\n<tr>\n<td>Frontend service <code class=\"language-text\">RobotsService</code></td>\n<td>Calls the User Management endpoints.</td>\n</tr>\n</tbody>\n</table>\n<p>The account and its token are separate objects. During renewal, the LDAP account remains in place while CAS creates a new token and deletes the previous one. Deleting through the Robots API removes both the addressed token and its associated technical account.</p>\n<h3 id=\"access-and-base-url\" style=\"position:relative;\"><a href=\"#access-and-base-url\" aria-label=\"access and base 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>Access and base URL</h3>\n<p>The API is available at the following base URL:</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>All operations require an authenticated account with the internal role <code class=\"language-text\">Universe Administrator</code>. Every method in <code class=\"language-text\">RobotResource</code> checks this role. The configured administrator role in the CAS configuration is mapped to this internal role. For integrations, this server-side role is what matters, even if the interface refers to the permission as a manager permission.</p>\n<p>The following <code class=\"language-text\">curl</code> examples use an existing authenticated User Management session. <code class=\"language-text\">cookies.txt</code> represents a cookie file in a format supported by <code class=\"language-text\">curl</code>, containing valid session cookies. Authentication itself is not part of the Robots API. Replace the host, IDs, and sample data with values from your environment.</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 with a JSON body use <code class=\"language-text\">Content-Type: application/json</code>. Responses containing data are returned as <code class=\"language-text\">application/json</code>. Unauthenticated requests may be rejected or redirected to the login page by security filters before reaching the resource.</p>\n<h3 id=\"endpoint-overview\" style=\"position:relative;\"><a href=\"#endpoint-overview\" aria-label=\"endpoint overview 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>Endpoint overview</h3>\n<table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Path relative to the base URL</th>\n<th>Purpose</th>\n<th>Success status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">GET</code></td>\n<td>empty</td>\n<td>List technical accounts with token metadata</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>Read one technical account's token metadata</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>empty</td>\n<td>Create a technical account and its first token</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>Replace an existing token</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>Delete a token and its associated technical account</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> is the <strong>LDAP username</strong> returned in <code class=\"language-text\">userId</code>. Encode it as a URL path segment. The username remains unchanged after renewal; only the CAS token ID changes. Renewal and deletion use the account’s first CAS token, as shown in the overview.</p>\n<p><code class=\"language-text\">GET /{userId}/{id}</code> uses the LDAP username from <code class=\"language-text\">userId</code> and the CAS token ID from <code class=\"language-text\">id</code>. Encode both as URL path segments. The backend looks up only that technical LDAP account and loads only its CAS tokens, then returns the matching token as a single metadata object without the secret <code class=\"language-text\">token</code> field. It returns <code class=\"language-text\">404</code> if the account or the requested token is missing. The display name follows the same rules as the overview. Example: <code class=\"language-text\">GET /usermgt/api/robots/datenabgleich/pat-123</code>. The frontend uses this endpoint for its detail view; the detail page URL includes the username and token ID.</p>\n<h3 id=\"retrieving-accounts-and-token-metadata\" style=\"position:relative;\"><a href=\"#retrieving-accounts-and-token-metadata\" aria-label=\"retrieving accounts and token metadata 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>Retrieving accounts and token metadata</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>Example response with <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>These values are examples. Actual IDs and timestamps are supplied by CAS.</p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code></td>\n<td>Token ID in CAS.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">userId</code></td>\n<td>LDAP username; used for renewal and deletion.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">displayName</code></td>\n<td>The LDAP display name in the overview; the username is used if the display name is empty.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">createdAt</code></td>\n<td>Token creation timestamp supplied by CAS.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">expiresAt</code></td>\n<td>Token expiry timestamp. The field may be absent if there is no expiry date.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scope</code></td>\n<td>The token's scope, for example <code class=\"language-text\">/scm,/redmine</code> or <code class=\"language-text\">/*</code>.</td>\n</tr>\n</tbody>\n</table>\n<p>The overview never contains the <code class=\"language-text\">token</code> field. The backend does not return a <code class=\"language-text\">status</code> field either; the frontend derives the status from the expiry date. Gson serialization omits fields whose value is <code class=\"language-text\">null</code>.</p>\n<h4 id=\"how-the-list-is-assembled\" style=\"position:relative;\"><a href=\"#how-the-list-is-assembled\" aria-label=\"how the list is assembled 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>How the list is assembled</h4>\n<ol>\n<li>The service searches the configured LDAP user base using the user base filter combined with <code class=\"language-text\">technical=TRUE</code>.</li>\n<li>The LDAP search reads pages of up to 100 entries and follows the paging cookies until the end. Usernames and display names are read through the configured attribute mapping.</li>\n<li>The accounts are sorted by username, ignoring case.</li>\n<li>For each account, the service requests token metadata from CAS.</li>\n<li>Only the first token per account, in the order returned by CAS, is included in the overview.</li>\n</ol>\n<p>Accounts without tokens are omitted. A CAS response of <code class=\"language-text\">204</code> is treated as an empty token list. If an LDAP or CAS query fails, the entire request fails; the API does not return an incomplete overview.</p>\n<p>The public API does not provide pagination parameters. A list request may trigger multiple LDAP pages and one CAS request per technical account. The regular user overview filters out technical accounts.</p>\n<h3 id=\"creating-a-technical-account\" style=\"position:relative;\"><a href=\"#creating-a-technical-account\" aria-label=\"creating a technical account 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>Creating a technical account</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 field</th>\n<th>Required</th>\n<th>Behavior</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">displayName</code></td>\n<td>Yes</td>\n<td>Also used as the username. Must contain 2 to 64 characters from <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>, and <code class=\"language-text\">-</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">expiresAt</code></td>\n<td>No</td>\n<td>An ISO-8601 timestamp that can be parsed by <code class=\"language-text\">Instant.parse</code> and must be in the future, for example <code class=\"language-text\">2099-01-01T00:00:00Z</code>. If absent or <code class=\"language-text\">null</code>, no expiry date is sent to CAS.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scope</code></td>\n<td>Yes in the frontend</td>\n<td>The frontend sends a comma-separated list of Dogu paths or <code class=\"language-text\">/*</code> for all Dogus. <code class=\"language-text\">RobotService</code> does not validate this field itself; it forwards it to CAS.</td>\n</tr>\n</tbody>\n</table>\n<p>The timestamp is an absolute point in time. Values such as <code class=\"language-text\">30</code> or <code class=\"language-text\">30 days</code> are not accepted. The interface calculates the timestamp from the selected number of days.</p>\n<p>Example response with <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>The service takes the metadata from CAS and sets <code class=\"language-text\">userId</code> and <code class=\"language-text\">displayName</code> to the LDAP username. It requires at least a non-empty <code class=\"language-text\">id</code> and a non-empty <code class=\"language-text\">token</code> from CAS. Other metadata may be absent if CAS does not provide it.</p>\n<p>The secret token value is returned only in the successful response to creation or renewal. The Robots API provides no way to retrieve it again later.</p>\n<h4 id=\"workflow-in-ldap-and-cas\" style=\"position:relative;\"><a href=\"#workflow-in-ldap-and-cas\" aria-label=\"workflow in ldap and 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>Workflow in LDAP and CAS</h4>\n<ol>\n<li>The service validates the name and expiry date.</li>\n<li>It generates a unique technical email address, for example <code class=\"language-text\">datenabgleich-robot@account.de</code>. The name is converted to lowercase, and sequences of characters outside <code class=\"language-text\">a–z</code> and <code class=\"language-text\">0–9</code> are replaced with hyphens. A sequence number is added if there is a conflict. The part before <code class=\"language-text\">@</code> is limited to 64 characters.</li>\n<li>The new LDAP user's username, display name, first name, and last name are set to the supplied name. The group list is initially empty, and the <code class=\"language-text\">technical</code> attribute is set to <code class=\"language-text\">TRUE</code>.</li>\n<li>The service generates a random internal password. Depending on the LDAP configuration, it is hashed before storage. The password is not returned to the API client.</li>\n<li>After the LDAP account has been created successfully, <code class=\"language-text\">PATClient</code> creates the token in CAS.</li>\n<li>A <code class=\"language-text\">UserEvent</code> of type <code class=\"language-text\">CREATE</code> is published only after token creation succeeds.</li>\n</ol>\n<p>If token creation fails, the service attempts to delete the LDAP account it just created. An existing account is not modified in the event of a name conflict. If rollback also fails, the additional error is logged; an LDAP account without a usable token may remain.</p>\n<h3 id=\"renewing-an-access-token\" style=\"position:relative;\"><a href=\"#renewing-an-access-token\" aria-label=\"renewing an access token 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>Renewing an access token</h3>\n<p>Renewal replaces the token of an existing technical account. It does not modify the existing token object.</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>As during creation, the expiry date is supplied in the <code class=\"language-text\">expiresAt</code> field.</p>\n<table>\n<thead>\n<tr>\n<th>Request body</th>\n<th>Effect</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>Uses the specified future expiry timestamp.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">{}</code></td>\n<td>Preserves the existing expiry date.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">{&quot;expiresAt&quot;:null}</code></td>\n<td>Removes the expiry date.</td>\n</tr>\n</tbody>\n</table>\n<p>An explicitly supplied timestamp that is invalid, empty, or not in the future results in <code class=\"language-text\">400 Bad Request</code>. The error messages refer to <code class=\"language-text\">expiresAt</code> because the same validation is used as for creation.</p>\n<p><strong>An explicit <code class=\"language-text\">null</code> removes the expiry date; omitting <code class=\"language-text\">expiresAt</code> preserves it.</strong> A token that already has no expiry date remains without one unless an explicit timestamp is supplied. For an expired token, provide a new future timestamp or explicitly remove expiration: without an override, the old expiry date is forwarded to CAS rather than automatically extended.</p>\n<p>The successful response has status <code class=\"language-text\">201 Created</code> and the same structure as the creation response. It contains the <strong>new ID</strong> and the <strong>new secret token value</strong>. Continue using the same username for subsequent operations.</p>\n<h4 id=\"workflow-and-error-handling\" style=\"position:relative;\"><a href=\"#workflow-and-error-handling\" aria-label=\"workflow and error handling 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>Workflow and error handling</h4>\n<ol>\n<li>The service looks up the LDAP account by the supplied username and <code class=\"language-text\">technical=TRUE</code>. It loads only that account’s CAS tokens and uses the first one. If the account or token is missing, the API returns <code class=\"language-text\">404</code>.</li>\n<li>It copies the old CAS token's display name and scope and applies the new expiry timestamp if supplied.</li>\n<li>CAS first creates a new token for the same user.</li>\n<li>The old token is then deleted in CAS.</li>\n<li>Only then does the API return the new token. The LDAP account remains unchanged, and no user event is published.</li>\n</ol>\n<p>If creating the replacement token fails, the old token is not deleted. If deleting the old token subsequently fails, the service attempts to remove the replacement token. This rollback attempt can also fail, in which case the failure is logged.</p>\n<p>After successful renewal, the old token is invalid. Applications must be updated to use the new token. Renewal is not idempotent: another request using the same username replaces the current token again. If the successful response is lost, the new token value cannot be retrieved from the overview.</p>\n<h3 id=\"deleting-a-technical-account\" style=\"position:relative;\"><a href=\"#deleting-a-technical-account\" aria-label=\"deleting a technical account 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>Deleting a technical account</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>On success, the API responds with <code class=\"language-text\">204 No Content</code> and no response body. Use the LDAP username for deletion, including after renewal.</p>\n<p>The service looks up the technical LDAP account by username and loads only its CAS tokens. It then deletes the first token in CAS, deletes the account in LDAP, and publishes a <code class=\"language-text\">UserEvent</code> of type <code class=\"language-text\">REMOVE</code>.</p>\n<p>If deleting the token fails, the LDAP account is retained. If LDAP deletion fails after successful CAS deletion, the token has already been removed while the account may still exist. There is no automatic recovery attempt for this case. A <code class=\"language-text\">REMOVE</code> event is published only after LDAP deletion succeeds.</p>\n<p>The operation deletes the first CAS token of the specified account. It does not loop through and delete additional tokens belonging to the same account. The regular creation and renewal workflows are designed for one managed token per account.</p>\n<h3 id=\"status-codes-and-error-responses\" style=\"position:relative;\"><a href=\"#status-codes-and-error-responses\" aria-label=\"status codes and error responses 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>Status codes and error responses</h3>\n<table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Operations</th>\n<th>Meaning</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>Metadata list (possibly <code class=\"language-text\">[]</code>) or individual token metadata loaded successfully.</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>Account and token created, or replacement token created.</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>Token and account deleted successfully.</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>Service validation failed, for example because of an invalid name, timestamp, or empty username.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">403 Forbidden</code></td>\n<td>All</td>\n<td>The resource does not recognize an authenticated identity with the required role. Upstream filters may return a different response.</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>The specified technical LDAP account or token does not exist.</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>The LDAP username is already taken, including by a regular user account.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">500 Internal Server Error</code></td>\n<td>All</td>\n<td>LDAP access failed.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">502 Bad Gateway</code></td>\n<td>All</td>\n<td>CAS access failed, or the CAS response was invalid or incomplete.</td>\n</tr>\n</tbody>\n</table>\n<p>Example error responses:</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>Validation and service errors usually contain a <code class=\"language-text\">message</code> field. The directly generated <code class=\"language-text\">403</code> and <code class=\"language-text\">404</code> responses have no body. Errors when reading JSON or in upstream filters may be generated by the framework and may look different.</p>\n<p>CAS errors are not forwarded unchanged with their original HTTP status. For example, a creation request rejected by CAS is treated as an error by <code class=\"language-text\">RobotService</code>, and the resource responds with <code class=\"language-text\">502</code>.</p>\n<h3 id=\"internal-cas-requests\" style=\"position:relative;\"><a href=\"#internal-cas-requests\" aria-label=\"internal 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>Internal CAS requests</h3>\n<p><code class=\"language-text\">PATClient</code> appends <code class=\"language-text\">/api/users</code> to the configured CAS server URL and uses the following endpoints:</p>\n<table>\n<thead>\n<tr>\n<th>Purpose</th>\n<th>Internal request</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Read token metadata</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>Create a token</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>Delete a token</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>The username is encoded as a URL path segment. Creation sends <code class=\"language-text\">displayName</code>, optionally <code class=\"language-text\">expiresAt</code>, and <code class=\"language-text\">scope</code> as JSON. The internal CAS field is also named <code class=\"language-text\">expiresAt</code> during renewal.</p>\n<p>For CAS requests, <code class=\"language-text\">PATClient</code> reads the Java system properties <code class=\"language-text\">cas.mfa.user</code> and <code class=\"language-text\">cas.mfa.password</code>. If both are set, it sends HTTP Basic Authentication using these service credentials. These credentials are separate from the API caller's session and the newly generated access token. Connection and read timeouts are each set to ten seconds.</p>\n<h3 id=\"limitations-and-integration-notes\" style=\"position:relative;\"><a href=\"#limitations-and-integration-notes\" aria-label=\"limitations and integration notes 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>Limitations and integration notes</h3>\n<ul>\n<li>LDAP and CAS do not share a transaction. The rollback attempts described above limit partial states but cannot completely prevent them if further errors occur.</li>\n<li><code class=\"language-text\">POST</code> creates an account on each call and does not assign an idempotency ID. After a connection failure, check the actual state before retrying. A repeated call with the same name may result in <code class=\"language-text\">409</code>.</li>\n<li>The metadata overview shows at most one token per account. It is not a complete list of all tokens stored in CAS.</li>\n<li>The association used for renewal and deletion is determined from the technical LDAP account and its CAS tokens. A <code class=\"language-text\">userId</code> from CAS is not used as the sole trusted source for this purpose.</li>\n<li>This implementation does not assign group memberships to new technical accounts. A token's Dogu selection is separate from application permissions within a Dogu.</li>\n<li>API clients should store token values securely and avoid writing them to application logs. Lost token values must be replaced by renewing the token again.</li>\n</ul>\n<h3 id=\"relevant-source-files-and-tests\" style=\"position:relative;\"><a href=\"#relevant-source-files-and-tests\" aria-label=\"relevant source files and 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>Relevant source files and tests</h3>\n<ul>\n<li>RobotResource.java: Endpoints, role checks, and status codes.</li>\n<li>RobotService.java: LDAP/CAS workflows, validation, and rollback attempts.</li>\n<li>CreateRobotRequest.java and RenewRobotRequest.java: Request fields.</li>\n<li>RobotPAT.java and CreatedRobotPAT.java: Response fields.</li>\n<li>PATClient.java: HTTP integration with CAS.</li>\n<li>Robots.ts: Frontend API calls.</li>\n<li>RobotResourceTest.java and RobotServiceTest.java: Tests for status codes, validation, and error handling.</li>\n</ul>","frontmatter":{"title":"","canonical":null},"fields":{"folders":["dogus","usermgt","development"],"delocalizedSlug":"/docs/dogus/usermgt/development/robots/","title":"Technical accounts: architecture and API","pageType":"docs"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/en/docs/dogus/usermgt/development/robots/#technical-accounts-architecture-and-api\">Technical accounts: architecture and API</a></p>\n<ul>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#components-and-responsibilities\">Components and responsibilities</a></li>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#access-and-base-url\">Access and base URL</a></li>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#endpoint-overview\">Endpoint overview</a></li>\n<li>\n<p><a href=\"/en/docs/dogus/usermgt/development/robots/#retrieving-accounts-and-token-metadata\">Retrieving accounts and token metadata</a></p>\n<ul>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#how-the-list-is-assembled\">How the list is assembled</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/en/docs/dogus/usermgt/development/robots/#creating-a-technical-account\">Creating a technical account</a></p>\n<ul>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#workflow-in-ldap-and-cas\">Workflow in LDAP and CAS</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/en/docs/dogus/usermgt/development/robots/#renewing-an-access-token\">Renewing an access token</a></p>\n<ul>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#workflow-and-error-handling\">Workflow and error handling</a></li>\n</ul>\n</li>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#deleting-a-technical-account\">Deleting a technical account</a></li>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#status-codes-and-error-responses\">Status codes and error responses</a></li>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#internal-cas-requests\">Internal CAS requests</a></li>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#limitations-and-integration-notes\">Limitations and integration notes</a></li>\n<li><a href=\"/en/docs/dogus/usermgt/development/robots/#relevant-source-files-and-tests\">Relevant source files and tests</a></li>\n</ul>\n</li>\n</ul>"},"allMarkdownRemark":{"edges":[{"node":{"fields":{"slug":"/docs/development/bash-guideline.en/","delocalizedSlug":"/docs/development/bash-guideline/","title":"Bash script guideline","folders":["development"],"pageType":"docs","delocalizedElement":"bash-guideline"}}},{"node":{"fields":{"slug":"/docs/development/dogu-creation.en/","delocalizedSlug":"/docs/development/dogu-creation/","title":"How to create a dogu#","folders":["development"],"pageType":"docs","delocalizedElement":"dogu-creation"}}},{"node":{"fields":{"slug":"/docs/development/goss.en/","delocalizedSlug":"/docs/development/goss/","title":"Goss Spec","folders":["development"],"pageType":"docs","delocalizedElement":"goss"}}},{"node":{"fields":{"slug":"/docs/development/image-build.en/","delocalizedSlug":"/docs/development/image-build/","title":"How to build a CES-image","folders":["development"],"pageType":"docs","delocalizedElement":"image-build"}}},{"node":{"fields":{"slug":"/docs/dogus/dogu-configuration.en/","delocalizedSlug":"/docs/dogus/dogu-configuration/","title":"Dogu Configuration","folders":["dogus"],"pageType":"docs","delocalizedElement":"dogu-configuration"}}},{"node":{"fields":{"slug":"/docs/system-components/ubuntu_upgrade.en/","delocalizedSlug":"/docs/system-components/ubuntu_upgrade/","title":"Upgrading from Ubuntu 20.04 to 24.04","folders":["system-components"],"pageType":"docs","delocalizedElement":"ubuntu_upgrade"}}},{"node":{"fields":{"slug":"/docs/dogus/admin/README.en/","delocalizedSlug":"/docs/dogus/admin/README/","title":"Readme","folders":["dogus","admin"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/admin/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/admin/CHANGELOG/","title":"Changelog","folders":["dogus","admin"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/backup/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/backup/CHANGELOG/","title":"Backup & Restore Changelog","folders":["dogus","backup"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/backup/README.en/","delocalizedSlug":"/docs/dogus/backup/README/","title":"Readme","folders":["dogus","backup"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/backup-watcher/development.en/","delocalizedSlug":"/docs/dogus/backup-watcher/development/","title":"Development","folders":["dogus","backup-watcher"],"pageType":"docs","delocalizedElement":"development"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/baseline/CHANGELOG/","title":"Baseline Changelog","folders":["dogus","baseline"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/README.en/","delocalizedSlug":"/docs/dogus/baseline/README/","title":"Readme","folders":["dogus","baseline"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/cas/CHANGELOG/","title":"CAS Changelog","folders":["dogus","cas"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/README.en/","delocalizedSlug":"/docs/dogus/cas/README/","title":"Readme","folders":["dogus","cas"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/cas_developer_guide.en/","delocalizedSlug":"/docs/dogus/cas/cas_developer_guide/","title":"Developments on the CAS","folders":["dogus","cas"],"pageType":"docs","delocalizedElement":"cas_developer_guide"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/cockpit/CHANGELOG/","title":"Cockpit Changelog","folders":["dogus","cockpit"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/getting_started.en/","delocalizedSlug":"/docs/dogus/baseline/getting_started/","title":"Development","folders":["dogus","baseline"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/README.en/","delocalizedSlug":"/docs/dogus/cockpit/README/","title":"Readme","folders":["dogus","cockpit"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/getting_started.en/","delocalizedSlug":"/docs/dogus/cockpit/getting_started/","title":"Getting Started","folders":["dogus","cockpit"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/easyredmine/CHANGELOG/","title":"Easy Redmine Changelog","folders":["dogus","easyredmine"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/README.en/","delocalizedSlug":"/docs/dogus/easyredmine/README/","title":"Readme","folders":["dogus","easyredmine"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/grafana/CHANGELOG/","title":"Grafana Changelog","folders":["dogus","grafana"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/README.en/","delocalizedSlug":"/docs/dogus/grafana/README/","title":"Readme","folders":["dogus","grafana"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/getting_started.en/","delocalizedSlug":"/docs/dogus/jenkins/getting_started/","title":"Getting Started","folders":["dogus","jenkins"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/README.en/","delocalizedSlug":"/docs/dogus/jenkins/README/","title":"Readme","folders":["dogus","jenkins"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/ldap/CHANGELOG/","title":"LDAP Changelog","folders":["dogus","ldap"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/README.en/","delocalizedSlug":"/docs/dogus/ldap/README/","title":"Readme","folders":["dogus","ldap"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/introduction.en/","delocalizedSlug":"/docs/introduction/","title":"Introduction","folders":[],"pageType":"docs","delocalizedElement":"introduction"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/README.en/","delocalizedSlug":"/docs/dogus/nexus/README/","title":"Readme","folders":["dogus","nexus"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/jenkins/CHANGELOG/","title":"Jenkins Changelog","folders":["dogus","jenkins"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/getting_started.en/","delocalizedSlug":"/docs/dogus/nexus/getting_started/","title":"Getting Started","folders":["dogus","nexus"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/nginx/CHANGELOG/","title":"Nginx Changelog","folders":["dogus","nginx"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/README.en/","delocalizedSlug":"/docs/dogus/nginx/README/","title":"Readme","folders":["dogus","nginx"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/plantuml/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/plantuml/CHANGELOG/","title":"Plantuml Changelog","folders":["dogus","plantuml"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/plantuml/README.en/","delocalizedSlug":"/docs/dogus/plantuml/README/","title":"Readme","folders":["dogus","plantuml"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/nexus/CHANGELOG/","title":"Nexus Repository OSS Changelog","folders":["dogus","nexus"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/getting_started.en/","delocalizedSlug":"/docs/dogus/portainer/getting_started/","title":"Getting Started","folders":["dogus","portainer"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/postfix/CHANGELOG/","title":"Postfix Changelog","folders":["dogus","postfix"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/README.en/","delocalizedSlug":"/docs/dogus/portainer/README/","title":"Readme","folders":["dogus","portainer"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/portainer/CHANGELOG/","title":"Portainer Changelog","folders":["dogus","portainer"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/getting_started.en/","delocalizedSlug":"/docs/dogus/postfix/getting_started/","title":"Getting Started","folders":["dogus","postfix"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/README.en/","delocalizedSlug":"/docs/dogus/postfix/README/","title":"Readme","folders":["dogus","postfix"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/postgresql/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/postgresql/CHANGELOG/","title":"PostgreSQL Changelog","folders":["dogus","postgresql"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/postgresql/README.en/","delocalizedSlug":"/docs/dogus/postgresql/README/","title":"Readme","folders":["dogus","postgresql"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/redmine/CHANGELOG/","title":"Redmine Changelog","folders":["dogus","redmine"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/README.en/","delocalizedSlug":"/docs/dogus/redmine/README/","title":"Readme","folders":["dogus","redmine"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/scm/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/scm/CHANGELOG/","title":"SCM-Manager Changelog","folders":["dogus","scm"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/scm/README.en/","delocalizedSlug":"/docs/dogus/scm/README/","title":"Readme","folders":["dogus","scm"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/smeagol/CHANGELOG/","title":"Changelog","folders":["dogus","smeagol"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/README.en/","delocalizedSlug":"/docs/dogus/smeagol/README/","title":"Readme","folders":["dogus","smeagol"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/architecture.en/","delocalizedSlug":"/docs/dogus/smeagol/architecture/","title":"Architecture","folders":["dogus","smeagol"],"pageType":"docs","delocalizedElement":"architecture"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/demo_content.en/","delocalizedSlug":"/docs/dogus/smeagol/demo_content/","title":"Demo-Inhalte","folders":["dogus","smeagol"],"pageType":"docs","delocalizedElement":"demo_content"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/README.en/","delocalizedSlug":"/docs/dogus/sonar/README/","title":"Readme","folders":["dogus","sonar"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/sonar/CHANGELOG/","title":"SonarQube Changelog","folders":["dogus","sonar"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/swaggerui/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/swaggerui/CHANGELOG/","title":"Swagger UI Changelog","folders":["dogus","swaggerui"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/swaggerui/README.en/","delocalizedSlug":"/docs/dogus/swaggerui/README/","title":"Readme","folders":["dogus","swaggerui"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/teamscale/CHANGELOG/","title":"Teamscale Changelog","folders":["dogus","teamscale"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/README.en/","delocalizedSlug":"/docs/dogus/teamscale/README/","title":"Readme","folders":["dogus","teamscale"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/getting_started.en/","delocalizedSlug":"/docs/dogus/teamscale/getting_started/","title":"Getting Started","folders":["dogus","teamscale"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/README.en/","delocalizedSlug":"/docs/dogus/usermgt/README/","title":"Readme","folders":["dogus","usermgt"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/usermgt/CHANGELOG/","title":"User Management Changelog","folders":["dogus","usermgt"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/getting_started.en/","delocalizedSlug":"/docs/dogus/usermgt/getting_started/","title":"Getting Started","folders":["dogus","usermgt"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/dogus/whitelabeling/CHANGELOG.en/","delocalizedSlug":"/docs/dogus/whitelabeling/CHANGELOG/","title":"Whitelabeling Changelog","folders":["dogus","whitelabeling"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/backup-watcher/CHANGELOG.en/","delocalizedSlug":"/docs/system-components/backup-watcher/CHANGELOG/","title":"Changelog","folders":["system-components","backup-watcher"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/backup-watcher/README.en/","delocalizedSlug":"/docs/system-components/backup-watcher/README/","title":"Readme","folders":["system-components","backup-watcher"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/CHANGELOG.en/","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/ces-on-proxmox-hypervisor.en/","delocalizedSlug":"/docs/system-components/ces-setup/ces-on-proxmox-hypervisor/","title":"Running CES on a Proxmox Hypervisor","folders":["system-components","ces-setup"],"pageType":"docs","delocalizedElement":"ces-on-proxmox-hypervisor"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/README.en/","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/getting_started.en/","delocalizedSlug":"/docs/system-components/ces-setup/getting_started/","title":"CES Setup Documentation","folders":["system-components","ces-setup"],"pageType":"docs","delocalizedElement":"getting_started"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/README.en/","delocalizedSlug":"/docs/system-components/cesapp/README/","title":"Readme","folders":["system-components","cesapp"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/getting_started.en/","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/cesappd/CHANGELOG.en/","delocalizedSlug":"/docs/system-components/cesappd/CHANGELOG/","title":"Changelog","folders":["system-components","cesappd"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/README.en/","delocalizedSlug":"/docs/system-components/cesappd/README/","title":"Readme","folders":["system-components","cesappd"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/CHANGELOG.en/","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.en/","delocalizedSlug":"/docs/system-components/warp-menu/CHANGELOG/","title":"Changelog","folders":["system-components","warp-menu"],"pageType":"docs","delocalizedElement":"CHANGELOG"}}},{"node":{"fields":{"slug":"/docs/system-components/warp-menu/README.en/","delocalizedSlug":"/docs/system-components/warp-menu/README/","title":"Readme","folders":["system-components","warp-menu"],"pageType":"docs","delocalizedElement":"README"}}},{"node":{"fields":{"slug":"/docs/dogus/admin/development/integration-tests.en/","delocalizedSlug":"/docs/dogus/admin/development/integration-tests/","title":"Integration tests","folders":["dogus","admin","development"],"pageType":"docs","delocalizedElement":"integration-tests"}}},{"node":{"fields":{"slug":"/docs/dogus/admin/development/setup_environment.en/","delocalizedSlug":"/docs/dogus/admin/development/setup_environment/","title":"Setup environment","folders":["dogus","admin","development"],"pageType":"docs","delocalizedElement":"setup_environment"}}},{"node":{"fields":{"slug":"/docs/dogus/backup/development/html_elements.en/","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.en/","delocalizedSlug":"/docs/dogus/backup/development/setup_integrationtests/","title":"Setup for the integration tests","folders":["dogus","backup","development"],"pageType":"docs","delocalizedElement":"setup_integrationtests"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/development/error_guidelines.en/","delocalizedSlug":"/docs/dogus/baseline/development/error_guidelines/","title":"Guidelines for handling errors in the Baseline tool.","folders":["dogus","baseline","development"],"pageType":"docs","delocalizedElement":"error_guidelines"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/development/integration_test.en/","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.en/","delocalizedSlug":"/docs/dogus/baseline/development/start_with_example_data_in_ces/","title":"Start baseline with sample data in CES","folders":["dogus","baseline","development"],"pageType":"docs","delocalizedElement":"start_with_example_data_in_ces"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/operations/configure_credentials.en/","delocalizedSlug":"/docs/dogus/baseline/operations/configure_credentials/","title":"Configuration of the Credentials","folders":["dogus","baseline","operations"],"pageType":"docs","delocalizedElement":"configure_credentials"}}},{"node":{"fields":{"slug":"/docs/dogus/baseline/operations/configure_dogu.en/","delocalizedSlug":"/docs/dogus/baseline/operations/configure_dogu/","title":"Configuration of the Baseline-Dogu","folders":["dogus","baseline","operations"],"pageType":"docs","delocalizedElement":"configure_dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/app/README.en/","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.en/","delocalizedSlug":"/docs/dogus/cas/development/Adjusting_CAS_code/","title":"Adaptation of the CAS code","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Adjusting_CAS_code"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Configuration_in_Standalone_App.en/","delocalizedSlug":"/docs/dogus/cas/development/Configuration_in_Standalone_App/","title":"Use of values from the 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.en/","delocalizedSlug":"/docs/dogus/cas/development/Configure_external_Keycloak/","title":"Set up Keycloak for an OIDC test environment","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Configure_external_Keycloak"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Create_Wiremock_Services_For_Tests.en/","delocalizedSlug":"/docs/dogus/cas/development/Create_Wiremock_Services_For_Tests/","title":"Create wiremock for etcd registry used by JUnit Tests","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Create_Wiremock_Services_For_Tests"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Service_Registry.en/","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/Setup_Integrationtests.en/","delocalizedSlug":"/docs/dogus/cas/development/Setup_Integrationtests/","title":"Setup for the integration tests","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Setup_Integrationtests"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/Upgrading_CAS.en/","delocalizedSlug":"/docs/dogus/cas/development/Upgrading_CAS/","title":"Upgrading CAS","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"Upgrading_CAS"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/develop_stage.en/","delocalizedSlug":"/docs/dogus/cas/development/develop_stage/","title":"Development mode","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"develop_stage"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/example_oidc_configuration.en/","delocalizedSlug":"/docs/dogus/cas/development/example_oidc_configuration/","title":"Example configuration for delegated authentication with OIDC","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"example_oidc_configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/external_ldap_for_test_purpose.en/","delocalizedSlug":"/docs/dogus/cas/development/external_ldap_for_test_purpose/","title":"Connecting an external LDAP using the docker-sample-ldap as an example.","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"external_ldap_for_test_purpose"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/personal_access_tokens.en/","delocalizedSlug":"/docs/dogus/cas/development/personal_access_tokens/","title":"PAT workflow for developers","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"personal_access_tokens"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/Configure_OIDC_Provider.en/","delocalizedSlug":"/docs/dogus/cas/operations/Configure_OIDC_Provider/","title":"Configuration for using an OIDC provider as an authentication source.","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"Configure_OIDC_Provider"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/development/update_theme.en/","delocalizedSlug":"/docs/dogus/cas/development/update_theme/","title":"Update of the \"CES-Theme-Tailwind\" in the thymeleaf-templates","folders":["dogus","cas","development"],"pageType":"docs","delocalizedElement":"update_theme"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/cas-login-limit.en/","delocalizedSlug":"/docs/dogus/cas/operations/cas-login-limit/","title":"Operations","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"cas-login-limit"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/customization_of_configurable_texts.en/","delocalizedSlug":"/docs/dogus/cas/operations/customization_of_configurable_texts/","title":"Customization of configurable texts","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"customization_of_configurable_texts"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/endpoint_accessToken.en/","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.en/","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.en/","delocalizedSlug":"/docs/dogus/cas/operations/endpoint_profile/","title":"Profile","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"endpoint_profile"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/oauth_guide.en/","delocalizedSlug":"/docs/dogus/cas/operations/oauth_guide/","title":"Use CAS as OAuth/OIDC Provider","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"oauth_guide"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/two_factor_authentication.en/","delocalizedSlug":"/docs/dogus/cas/operations/two_factor_authentication/","title":"Two Factor Authentication","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"two_factor_authentication"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/development/Developers_Guide.en/","delocalizedSlug":"/docs/dogus/cockpit/development/Developers_Guide/","title":"Developer Guide","folders":["dogus","cockpit","development"],"pageType":"docs","delocalizedElement":"Developers_Guide"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/development/Pinned_Dashboard.en/","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.en/","delocalizedSlug":"/docs/dogus/cockpit/development/Setup_Integrationtest/","title":"Setup for the integration tests","folders":["dogus","cockpit","development"],"pageType":"docs","delocalizedElement":"Setup_Integrationtest"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/operations/Configure_Dogu.en/","delocalizedSlug":"/docs/dogus/cockpit/operations/Configure_Dogu/","title":"Configuration of the Cockpit Dogu","folders":["dogus","cockpit","operations"],"pageType":"docs","delocalizedElement":"Configure_Dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/cockpit/operations/Install_Dogu.en/","delocalizedSlug":"/docs/dogus/cockpit/operations/Install_Dogu/","title":"Installation of the Cockpit Dogu","folders":["dogus","cockpit","operations"],"pageType":"docs","delocalizedElement":"Install_Dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/development/environment.en/","delocalizedSlug":"/docs/dogus/easyredmine/development/environment/","title":"Local development environment","folders":["dogus","easyredmine","development"],"pageType":"docs","delocalizedElement":"environment"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/development/gui_testing.en/","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.en/","delocalizedSlug":"/docs/dogus/easyredmine/development/shell_testing/","title":"Shell testing","folders":["dogus","easyredmine","development"],"pageType":"docs","delocalizedElement":"shell_testing"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/operations/import_project_templates.en/","delocalizedSlug":"/docs/dogus/easyredmine/operations/import_project_templates/","title":"Project template import","folders":["dogus","easyredmine","operations"],"pageType":"docs","delocalizedElement":"import_project_templates"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/operations/logging.en/","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.en/","delocalizedSlug":"/docs/dogus/grafana/development/grafana_carp/","title":"The Grafana CARP","folders":["dogus","grafana","development"],"pageType":"docs","delocalizedElement":"grafana_carp"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/development/local_development.en/","delocalizedSlug":"/docs/dogus/grafana/development/local_development/","title":"Local development on Grafana-Dogu in the k8s-ecosystem","folders":["dogus","grafana","development"],"pageType":"docs","delocalizedElement":"local_development"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/operations/configuration.en/","delocalizedSlug":"/docs/dogus/grafana/operations/configuration/","title":"Configuration of the Grafana-Dogus","folders":["dogus","grafana","operations"],"pageType":"docs","delocalizedElement":"configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/operations/important_remarks.en/","delocalizedSlug":"/docs/dogus/grafana/operations/important_remarks/","title":"Important remarks","folders":["dogus","grafana","operations"],"pageType":"docs","delocalizedElement":"important_remarks"}}},{"node":{"fields":{"slug":"/docs/dogus/grafana/operations/dashboard_provision.en/","delocalizedSlug":"/docs/dogus/grafana/operations/dashboard_provision/","title":"Automatically provision dashboards","folders":["dogus","grafana","operations"],"pageType":"docs","delocalizedElement":"dashboard_provision"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/operations/1_administrators_checklist.en/","delocalizedSlug":"/docs/dogus/easyredmine/operations/1_administrators_checklist/","title":"1. Administration Checklist","folders":["dogus","easyredmine","operations"],"pageType":"docs","delocalizedElement":"1_administrators_checklist"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/development/plugin_blocklist.en/","delocalizedSlug":"/docs/dogus/jenkins/development/plugin_blocklist/","title":"Plugin blocklist","folders":["dogus","jenkins","development"],"pageType":"docs","delocalizedElement":"plugin_blocklist"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/development/plugin_compatibility.en/","delocalizedSlug":"/docs/dogus/jenkins/development/plugin_compatibility/","title":"Plugin compatibility list","folders":["dogus","jenkins","development"],"pageType":"docs","delocalizedElement":"plugin_compatibility"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/development/plugin_test.en/","delocalizedSlug":"/docs/dogus/jenkins/development/plugin_test/","title":"Test Plugin compatibility","folders":["dogus","jenkins","development"],"pageType":"docs","delocalizedElement":"plugin_test"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/Additional_SSL_certificates.en/","delocalizedSlug":"/docs/dogus/jenkins/operations/Additional_SSL_certificates/","title":"Additional SSL certificates","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"Additional_SSL_certificates"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/Building_with_custom_Java.en/","delocalizedSlug":"/docs/dogus/jenkins/operations/Building_with_custom_Java/","title":"Building with custom OpenJDK versions","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"Building_with_custom_Java"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/Post_initialization_scripts.en/","delocalizedSlug":"/docs/dogus/jenkins/operations/Post_initialization_scripts/","title":"Post-initialization scripts","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"Post_initialization_scripts"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/Install_Jenkins.en/","delocalizedSlug":"/docs/dogus/jenkins/operations/Install_Jenkins/","title":"Installation of the Jenkins Dogu","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"Install_Jenkins"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/TCP_agent_listener_port.en/","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.en/","delocalizedSlug":"/docs/dogus/jenkins/operations/additional_configuration/","title":"Additional configurations","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"additional_configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/azure_agents.en/","delocalizedSlug":"/docs/dogus/jenkins/operations/azure_agents/","title":"Set up Jenkins agents in the Azure Cloud","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"azure_agents"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/development/upgrade_guide.en/","delocalizedSlug":"/docs/dogus/jenkins/development/upgrade_guide/","title":"Upgrade base image","folders":["dogus","jenkins","development"],"pageType":"docs","delocalizedElement":"upgrade_guide"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/configure_log_level.en/","delocalizedSlug":"/docs/dogus/jenkins/operations/configure_log_level/","title":"Configure log level","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"configure_log_level"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/configure_timezone.en/","delocalizedSlug":"/docs/dogus/jenkins/operations/configure_timezone/","title":"Configure the time zone","folders":["dogus","jenkins","operations"],"pageType":"docs","delocalizedElement":"configure_timezone"}}},{"node":{"fields":{"slug":"/docs/dogus/jenkins/operations/kubernetes_native_builds.en/","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/password_policy.en/","delocalizedSlug":"/docs/dogus/ldap/development/password_policy/","title":"Important notes on installing the password policy","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"password_policy"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/development/development_process.en/","delocalizedSlug":"/docs/dogus/ldap/development/development_process/","title":"Development Process (Dogu + Component)","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"development_process"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/development/review.en/","delocalizedSlug":"/docs/dogus/ldap/development/review/","title":"Important to note when reviewing the LDAP-Dogus.","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"review"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/development/root_password_rotation.en/","delocalizedSlug":"/docs/dogus/ldap/development/root_password_rotation/","title":"LDAP root password rotation","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"root_password_rotation"}}},{"node":{"fields":{"slug":"/docs/dogus/easyredmine/operations/default_configuration.en/","delocalizedSlug":"/docs/dogus/easyredmine/operations/default_configuration/","title":"Deploy configuration on dogustart","folders":["dogus","easyredmine","operations"],"pageType":"docs","delocalizedElement":"default_configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/operations/ldap_component_installation.en/","delocalizedSlug":"/docs/dogus/ldap/operations/ldap_component_installation/","title":"Install and Configure the LDAP Component","folders":["dogus","ldap","operations"],"pageType":"docs","delocalizedElement":"ldap_component_installation"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/development/test_ldap_as_initial_install.en/","delocalizedSlug":"/docs/dogus/ldap/development/test_ldap_as_initial_install/","title":"Test local LDAP version as initial installation.","folders":["dogus","ldap","development"],"pageType":"docs","delocalizedElement":"test_ldap_as_initial_install"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/operations/ldap_migration_dogu_to_component.en/","delocalizedSlug":"/docs/dogus/ldap/operations/ldap_migration_dogu_to_component/","title":"LDAP Migration from Dogu to Component","folders":["dogus","ldap","operations"],"pageType":"docs","delocalizedElement":"ldap_migration_dogu_to_component"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/operations/mail_after_changed_password.en/","delocalizedSlug":"/docs/dogus/ldap/operations/mail_after_changed_password/","title":"# Sending an e-mail after changing a user's password","folders":["dogus","ldap","operations"],"pageType":"docs","delocalizedElement":"mail_after_changed_password"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/development/dev.en/","delocalizedSlug":"/docs/dogus/nexus/development/dev/","title":"Dev","folders":["dogus","nexus","development"],"pageType":"docs","delocalizedElement":"dev"}}},{"node":{"fields":{"slug":"/docs/dogus/ldap/operations/password-policy.en/","delocalizedSlug":"/docs/dogus/ldap/operations/password-policy/","title":"Password policies","folders":["dogus","ldap","operations"],"pageType":"docs","delocalizedElement":"password-policy"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/operations/Configure_Service_Accounts.en/","delocalizedSlug":"/docs/dogus/nexus/operations/Configure_Service_Accounts/","title":"Configuration of service accounts","folders":["dogus","nexus","operations"],"pageType":"docs","delocalizedElement":"Configure_Service_Accounts"}}},{"node":{"fields":{"slug":"/docs/dogus/nexus/operations/preconfigure_repositories.en/","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.en/","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.en/","delocalizedSlug":"/docs/dogus/nexus/operations/predefined_nexus_entities/","title":"Preconfigured Nexus settings","folders":["dogus","nexus","operations"],"pageType":"docs","delocalizedElement":"predefined_nexus_entities"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/dev/ces-theme.en/","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/nginx/dev/client-certificates.en/","delocalizedSlug":"/docs/dogus/nginx/dev/client-certificates/","title":"Mutual TLS with client certificates","folders":["dogus","nginx","dev"],"pageType":"docs","delocalizedElement":"client-certificates"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/dev/integration_tests.en/","delocalizedSlug":"/docs/dogus/nginx/dev/integration_tests/","title":"Setting up the integration tests","folders":["dogus","nginx","dev"],"pageType":"docs","delocalizedElement":"integration_tests"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/dev/support_entries_in_warp_menu.en/","delocalizedSlug":"/docs/dogus/nginx/dev/support_entries_in_warp_menu/","title":"Configure support entries for the warp menu","folders":["dogus","nginx","dev"],"pageType":"docs","delocalizedElement":"support_entries_in_warp_menu"}}},{"node":{"fields":{"slug":"/docs/dogus/nginx/operations/proxy_buffering.en/","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.en/","delocalizedSlug":"/docs/dogus/portainer/operations/Add_Portainer_Endpoint/","title":"Configuring a Portainer endpoint via Dogu-config","folders":["dogus","portainer","operations"],"pageType":"docs","delocalizedElement":"Add_Portainer_Endpoint"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/operations/User_Roles.en/","delocalizedSlug":"/docs/dogus/portainer/operations/User_Roles/","title":"Permissions & roles","folders":["dogus","portainer","operations"],"pageType":"docs","delocalizedElement":"User_Roles"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/development/Developers_Guide.en/","delocalizedSlug":"/docs/dogus/postfix/development/Developers_Guide/","title":"Developer Guide","folders":["dogus","postfix","development"],"pageType":"docs","delocalizedElement":"Developers_Guide"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/development/Send_Mails_locally.en/","delocalizedSlug":"/docs/dogus/postfix/development/Send_Mails_locally/","title":"Local mail dispatch","folders":["dogus","postfix","development"],"pageType":"docs","delocalizedElement":"Send_Mails_locally"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/operations/Configure_Dogu.en/","delocalizedSlug":"/docs/dogus/postfix/operations/Configure_Dogu/","title":"Configuration of the Postfix dogu","folders":["dogus","postfix","operations"],"pageType":"docs","delocalizedElement":"Configure_Dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/operations/Install_Portainer.en/","delocalizedSlug":"/docs/dogus/portainer/operations/Install_Portainer/","title":"Installing the Portainer dogu","folders":["dogus","portainer","operations"],"pageType":"docs","delocalizedElement":"Install_Portainer"}}},{"node":{"fields":{"slug":"/docs/dogus/postfix/operations/Install_Postfix.en/","delocalizedSlug":"/docs/dogus/postfix/operations/Install_Postfix/","title":"Installation of the Postfix dogu","folders":["dogus","postfix","operations"],"pageType":"docs","delocalizedElement":"Install_Postfix"}}},{"node":{"fields":{"slug":"/docs/dogus/portainer/operations/Configure_Portainer.en/","delocalizedSlug":"/docs/dogus/portainer/operations/Configure_Portainer/","title":"Configuration of Portainer","folders":["dogus","portainer","operations"],"pageType":"docs","delocalizedElement":"Configure_Portainer"}}},{"node":{"fields":{"slug":"/docs/dogus/postgresql/development/upgrade_dogu.en/","delocalizedSlug":"/docs/dogus/postgresql/development/upgrade_dogu/","title":"Upgrade of the PostgreSQL Dogu","folders":["dogus","postgresql","development"],"pageType":"docs","delocalizedElement":"upgrade_dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/Setup_Integrationtests.en/","delocalizedSlug":"/docs/dogus/redmine/development/Setup_Integrationtests/","title":"Setup for the integration tests","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"Setup_Integrationtests"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/cas_plugin_and_session_store.en/","delocalizedSlug":"/docs/dogus/redmine/development/cas_plugin_and_session_store/","title":"Developer notes on the CAS plugin and the session store.","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"cas_plugin_and_session_store"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/shell_testing.en/","delocalizedSlug":"/docs/dogus/redmine/development/shell_testing/","title":"Shell testing","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"shell_testing"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/test_air-gapped.en/","delocalizedSlug":"/docs/dogus/redmine/development/test_air-gapped/","title":"Test if the dogu would work in an air-gapped environment","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"test_air-gapped"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/development/upgrade_dogu.en/","delocalizedSlug":"/docs/dogus/redmine/development/upgrade_dogu/","title":"Upgrade of the Redmine Dogu","folders":["dogus","redmine","development"],"pageType":"docs","delocalizedElement":"upgrade_dogu"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/operations/change_gravatar_settings.en/","delocalizedSlug":"/docs/dogus/redmine/operations/change_gravatar_settings/","title":"Changing Gravatar settings","folders":["dogus","redmine","operations"],"pageType":"docs","delocalizedElement":"change_gravatar_settings"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/operations/default_configuration.en/","delocalizedSlug":"/docs/dogus/redmine/operations/default_configuration/","title":"Deploy configuration on dogustart","folders":["dogus","redmine","operations"],"pageType":"docs","delocalizedElement":"default_configuration"}}},{"node":{"fields":{"slug":"/docs/dogus/redmine/operations/redmine_plugins.en/","delocalizedSlug":"/docs/dogus/redmine/operations/redmine_plugins/","title":"Redmine plugins file management","folders":["dogus","redmine","operations"],"pageType":"docs","delocalizedElement":"redmine_plugins"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/development/Setup_Integrationtest.en/","delocalizedSlug":"/docs/dogus/smeagol/development/Setup_Integrationtest/","title":"Setup for the integration tests","folders":["dogus","smeagol","development"],"pageType":"docs","delocalizedElement":"Setup_Integrationtest"}}},{"node":{"fields":{"slug":"/docs/dogus/smeagol/development/start_and_debug_locally.en/","delocalizedSlug":"/docs/dogus/smeagol/development/start_and_debug_locally/","title":"Start Smeagol locally","folders":["dogus","smeagol","development"],"pageType":"docs","delocalizedElement":"start_and_debug_locally"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/carp_develop_stage.en/","delocalizedSlug":"/docs/dogus/sonar/development/carp_develop_stage/","title":"CARP Development Mode","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"carp_develop_stage"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/carp_remote_debugging.en/","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/sonar/development/community-branch-plugin.en/","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.en/","delocalizedSlug":"/docs/dogus/sonar/development/developing/","title":"Developing the SonarQube dogu","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"developing"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/scanning_code_the_easy_way.en/","delocalizedSlug":"/docs/dogus/sonar/development/scanning_code_the_easy_way/","title":"Easier scanning with Sonar-scanner-cli","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"scanning_code_the_easy_way"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/development/understanding_sonarcarp.en/","delocalizedSlug":"/docs/dogus/sonar/development/understanding_sonarcarp/","title":"Understanding how Sonarcarp works","folders":["dogus","sonar","development"],"pageType":"docs","delocalizedElement":"understanding_sonarcarp"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/operations/global_permission.en/","delocalizedSlug":"/docs/dogus/sonar/operations/global_permission/","title":"global permissions","folders":["dogus","sonar","operations"],"pageType":"docs","delocalizedElement":"global_permission"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/operations/import_quality_profile.en/","delocalizedSlug":"/docs/dogus/sonar/operations/import_quality_profile/","title":"Operations","folders":["dogus","sonar","operations"],"pageType":"docs","delocalizedElement":"import_quality_profile"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/sonar-cas-plugin/CHANGELOG.en/","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/operations/permission_template.en/","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/README.en/","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.en/","delocalizedSlug":"/docs/dogus/sonar/sonar-cas-plugin/architecture/","title":"Architecture and internals","folders":["dogus","sonar","sonar-cas-plugin"],"pageType":"docs","delocalizedElement":"architecture"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/sonar-cas-plugin/development.en/","delocalizedSlug":"/docs/dogus/sonar/sonar-cas-plugin/development/","title":"Developing the SonarQube CAS plugin","folders":["dogus","sonar","sonar-cas-plugin"],"pageType":"docs","delocalizedElement":"development"}}},{"node":{"fields":{"slug":"/docs/dogus/sonar/sonar-cas-plugin/pluginConfiguration.en/","delocalizedSlug":"/docs/dogus/sonar/sonar-cas-plugin/pluginConfiguration/","title":"Plugin configuration","folders":["dogus","sonar","sonar-cas-plugin"],"pageType":"docs","delocalizedElement":"pluginConfiguration"}}},{"node":{"fields":{"slug":"/docs/dogus/swaggerui/development/local_setup.en/","delocalizedSlug":"/docs/dogus/swaggerui/development/local_setup/","title":"Setting up the Swagger UI Dogu","folders":["dogus","swaggerui","development"],"pageType":"docs","delocalizedElement":"local_setup"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/operations/Install_Teamscale.en/","delocalizedSlug":"/docs/dogus/teamscale/operations/Install_Teamscale/","title":"Installation of the Teamscale Dogu","folders":["dogus","teamscale","operations"],"pageType":"docs","delocalizedElement":"Install_Teamscale"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/operations/dogu_features.en/","delocalizedSlug":"/docs/dogus/teamscale/operations/dogu_features/","title":"Features of the Teamscale Dogu","folders":["dogus","teamscale","operations"],"pageType":"docs","delocalizedElement":"dogu_features"}}},{"node":{"fields":{"slug":"/docs/dogus/teamscale/operations/upgrade_teamscale.en/","delocalizedSlug":"/docs/dogus/teamscale/operations/upgrade_teamscale/","title":"Upgrading Teamscale","folders":["dogus","teamscale","operations"],"pageType":"docs","delocalizedElement":"upgrade_teamscale"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/development/Developers_Guide.en/","delocalizedSlug":"/docs/dogus/usermgt/development/Developers_Guide/","title":"Developing Usermgt","folders":["dogus","usermgt","development"],"pageType":"docs","delocalizedElement":"Developers_Guide"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/development/api.en/","delocalizedSlug":"/docs/dogus/usermgt/development/api/","title":"Api description","folders":["dogus","usermgt","development"],"pageType":"docs","delocalizedElement":"api"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/development/configure_integration_tests.en/","delocalizedSlug":"/docs/dogus/usermgt/development/configure_integration_tests/","title":"Configuration for integration tests","folders":["dogus","usermgt","development"],"pageType":"docs","delocalizedElement":"configure_integration_tests"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/development/robots.en/","delocalizedSlug":"/docs/dogus/usermgt/development/robots/","title":"Technical accounts: architecture and API","folders":["dogus","usermgt","development"],"pageType":"docs","delocalizedElement":"robots"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/operations/create_users_synced.en/","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/csv-import.en/","delocalizedSlug":"/docs/dogus/usermgt/operations/csv-import/","title":"CSV IMPORT","folders":["dogus","usermgt","operations"],"pageType":"docs","delocalizedElement":"csv-import"}}},{"node":{"fields":{"slug":"/docs/dogus/usermgt/operations/password-policy.en/","delocalizedSlug":"/docs/dogus/usermgt/operations/password-policy/","title":"Password Policy","folders":["dogus","usermgt","operations"],"pageType":"docs","delocalizedElement":"password-policy"}}},{"node":{"fields":{"slug":"/docs/dogus/whitelabeling/development/setup_environment.en/","delocalizedSlug":"/docs/dogus/whitelabeling/development/setup_environment/","title":"Setup environment","folders":["dogus","whitelabeling","development"],"pageType":"docs","delocalizedElement":"setup_environment"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/operations/Configure_Unattended_Upgrades.en/","delocalizedSlug":"/docs/system-components/ces-setup/operations/Configure_Unattended_Upgrades/","title":"Configuration of unattended upgrades","folders":["system-components","ces-setup","operations"],"pageType":"docs","delocalizedElement":"Configure_Unattended_Upgrades"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/operations/Import_Projects.en/","delocalizedSlug":"/docs/system-components/ces-setup/operations/Import_Projects/","title":"Importing projects in the CES setup","folders":["system-components","ces-setup","operations"],"pageType":"docs","delocalizedElement":"Import_Projects"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/access_structure.en/","delocalizedSlug":"/docs/system-components/cesapp/development/access_structure/","title":"Access structure","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"access_structure"}}},{"node":{"fields":{"slug":"/docs/system-components/ces-setup/operations/setup-json.en/","delocalizedSlug":"/docs/system-components/ces-setup/operations/setup-json/","title":"Usage of setup.json","folders":["system-components","ces-setup","operations"],"pageType":"docs","delocalizedElement":"setup-json"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/cesapp_cmd_helptext_styleguide.en/","delocalizedSlug":"/docs/system-components/cesapp/development/cesapp_cmd_helptext_styleguide/","title":"Styleguide for help text output","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"cesapp_cmd_helptext_styleguide"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/dogu_json_upgrade_v2.en/","delocalizedSlug":"/docs/system-components/cesapp/development/dogu_json_upgrade_v2/","title":"upgrade a dogu.json from v1 to v2","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"dogu_json_upgrade_v2"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/generating_mocks.en/","delocalizedSlug":"/docs/system-components/cesapp/development/generating_mocks/","title":"Generating mocks","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"generating_mocks"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/major_release.en/","delocalizedSlug":"/docs/system-components/cesapp/development/major_release/","title":"Release cesapp in a new major version.","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"major_release"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/development/running_tests.en/","delocalizedSlug":"/docs/system-components/cesapp/development/running_tests/","title":"Running tests","folders":["system-components","cesapp","development"],"pageType":"docs","delocalizedElement":"running_tests"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/alert_mail.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/alert_mail/","title":"Email notification for failed processes","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"alert_mail"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/backup.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/backup/","title":"Command: cesapp backup","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"backup"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/backup_and_restore.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/backup_and_restore/","title":"Backup and Restore (B&R)","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"backup_and_restore"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/blueprint_upgrade.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/blueprint_upgrade/","title":"Upgrade the CES with Blueprints","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"blueprint_upgrade"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/build.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/build/","title":"Command: cesapp build","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"build"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/command.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/command/","title":"Command: cesapp command","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"command"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/debug_mode.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/debug_mode/","title":"Command: `cesapp debug-mode`","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"debug_mode"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/detail.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/detail/","title":"Command cesapp detail","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"detail"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/detailremote.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/detailremote/","title":"Command: cesapp detailremote","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"detailremote"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/dogu-upgrade.en/","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/edit_config.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/edit_config/","title":"Command: cesapp edit-config","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"edit_config"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/healthy.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/healthy/","title":"Command: cesapp healthy","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"healthy"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/install.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/install/","title":"Command: cesapp install","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"install"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/instance.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/instance/","title":"Command: cesapp instance","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"instance"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/list-remote.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/list-remote/","title":"Command: cesapp list-remote","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"list-remote"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/list.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/list/","title":"Command: cesapp list","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"list"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/list_upgrades.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/list_upgrades/","title":"Command: cesapp list-upgrades","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"list_upgrades"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/login.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/login/","title":"Command: cesapp login","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"login"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/migrating.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/migrating/","title":"Migrating Cesapp versions","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"migrating"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/pull.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/pull/","title":"Command: cesapp pull","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"pull"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/purge.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/purge/","title":"Command: cesapp purge","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"purge"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/push.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/push/","title":"Command: cesapp push","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"push"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/reconfigure.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/reconfigure/","title":"Command: cesapp reconfigure","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"reconfigure"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/recreate.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/recreate/","title":"Command: cesapp recreate","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"recreate"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/remove-backups.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/remove-backups/","title":"Command 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.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/remove-backups_list-policies/","title":"Command: `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.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/restart/","title":"Command: cesapp restart","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"restart"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/restore.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/restore/","title":"Command: cesapp restore","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"restore"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/start.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/start/","title":"Command: cesapp start","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"start"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/stop.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/stop/","title":"Command: cesapp stop","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"stop"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/switch-namespace.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/switch-namespace/","title":"Command: cesapp switch-namespace","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"switch-namespace"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/unregister.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/unregister/","title":"Command: cesapp unregister","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"unregister"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/upgrade.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/upgrade/","title":"Command: cesapp upgrade","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"upgrade"}}},{"node":{"fields":{"slug":"/docs/system-components/cesapp/operations/verify.en/","delocalizedSlug":"/docs/system-components/cesapp/operations/verify/","title":"Command: cesapp verify","folders":["system-components","cesapp","operations"],"pageType":"docs","delocalizedElement":"verify"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/development/development.en/","delocalizedSlug":"/docs/system-components/cesappd/development/development/","title":"Development","folders":["system-components","cesappd","development"],"pageType":"docs","delocalizedElement":"development"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/operations/architecture.en/","delocalizedSlug":"/docs/system-components/cesappd/operations/architecture/","title":"Architecture of the cesappd","folders":["system-components","cesappd","operations"],"pageType":"docs","delocalizedElement":"architecture"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/operations/dogu_authentication.en/","delocalizedSlug":"/docs/system-components/cesappd/operations/dogu_authentication/","title":"Dogu authentication","folders":["system-components","cesappd","operations"],"pageType":"docs","delocalizedElement":"dogu_authentication"}}},{"node":{"fields":{"slug":"/docs/system-components/cesappd/operations/firewall.en/","delocalizedSlug":"/docs/system-components/cesappd/operations/firewall/","title":"Firewall setup for Cesappd","folders":["system-components","cesappd","operations"],"pageType":"docs","delocalizedElement":"firewall"}}},{"node":{"fields":{"slug":"/docs/system-components/etcd/development/etcd_registry_structure.en/","delocalizedSlug":"/docs/system-components/etcd/development/etcd_registry_structure/","title":"Etcd registry structure","folders":["system-components","etcd","development"],"pageType":"docs","delocalizedElement":"etcd_registry_structure"}}},{"node":{"fields":{"slug":"/docs/system-components/etcd/development/maintenance_mode.en/","delocalizedSlug":"/docs/system-components/etcd/development/maintenance_mode/","title":"Maintenance mode","folders":["system-components","etcd","development"],"pageType":"docs","delocalizedElement":"maintenance_mode"}}},{"node":{"fields":{"slug":"/docs/dogus/cas/operations/password-management.en/","delocalizedSlug":"/docs/dogus/cas/operations/password-management/","title":"Password management in CAS","folders":["dogus","cas","operations"],"pageType":"docs","delocalizedElement":"password-management"}}}]},"site":{"siteMetadata":{"feedbackForumUrl":"https://community.cloudogu.com/c/cloudogu-ecosystem/ecosystem-docs/43"}}},"pageContext":{"slug":"/docs/dogus/usermgt/development/robots/","pageType":"docs","locale":"en","hrefLang":"en-US","originalPath":"/docs/dogus/usermgt/development/robots/","dateFormat":"MM/DD/YYYY"}},"staticQueryHashes":["1239077767","1958541892","1958541892","3280999885","3280999885","3963778127","914906612"]}