Files
admin.derez.ai/api_doc.html
T
oliver 57c3992d86 copy
2026-06-08 17:00:32 -03:00

2472 lines
117 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>DEREZ.AI / API Reference</title>
<style>
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
:root {
--bg: #000810;
--bg-card: #010f20;
--bg-inner: #000d1a;
--bg-hover: #001a30;
--bg-input: #000813;
--border: #0a3060;
--accent: #00f5ff;
--accent-dim: #002535;
--danger: #ff3b3b;
--success: #00ff88;
--warning: #ffaa00;
--text: #c8f0ff;
--text-muted: #2e6a80;
}
html,
body {
background: var(--bg);
color: var(--text);
font-family: "Courier New", Courier, monospace;
min-height: 100vh;
font-size: 14px;
}
/* ── HEADER ── */
#top-header {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 54px;
background: var(--bg-card);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 28px;
z-index: 1000;
box-shadow: 0 2px 24px rgba(0, 0, 0, 0.7);
}
#header-left {
display: flex;
align-items: center;
gap: 10px;
}
#header-brand {
color: var(--accent);
font-weight: bold;
font-size: 16px;
letter-spacing: 0.1em;
}
#header-sep {
color: var(--text-muted);
font-size: 16px;
}
#header-sub {
color: var(--text-muted);
font-size: 13px;
letter-spacing: 0.05em;
}
#header-badge {
background: var(--accent-dim);
color: var(--accent);
border: 1px solid rgba(0, 245, 255, 0.25);
border-radius: 12px;
padding: 4px 14px;
font-size: 11px;
font-weight: bold;
letter-spacing: 0.07em;
}
/* ── SEARCH ── */
#search-wrap {
position: sticky;
top: 54px;
z-index: 900;
background: var(--bg-card);
border-bottom: 1px solid var(--border);
padding: 14px 28px;
}
#search-inner {
display: flex;
align-items: center;
gap: 14px;
}
#search-box-wrap {
position: relative;
flex: 1;
}
#search-icon {
position: absolute;
left: 12px;
top: 50%;
transform: translateY(-50%);
color: var(--text-muted);
pointer-events: none;
}
#search-input {
width: 100%;
background: var(--bg-input);
border: 1px solid var(--border);
border-radius: 6px;
color: var(--text);
font-family: "Courier New", Courier, monospace;
font-size: 13px;
padding: 10px 14px 10px 40px;
outline: none;
transition:
border-color 0.15s,
box-shadow 0.15s;
}
#search-input::placeholder {
color: var(--text-muted);
}
#search-input:focus {
border-color: var(--accent);
box-shadow: 0 0 0 2px rgba(0, 245, 255, 0.15);
}
#search-counter {
color: var(--text-muted);
font-size: 12px;
white-space: nowrap;
min-width: 130px;
text-align: right;
}
#search-counter .cnt {
color: var(--accent);
font-weight: bold;
}
/* ── MAIN ── */
#main {
padding: 32px 28px 80px;
margin-top: 54px;
}
/* ── SECTION ── */
.section {
margin-bottom: 40px;
}
.section-header {
display: flex;
align-items: center;
gap: 14px;
margin-bottom: 10px;
}
.section-path {
color: var(--accent);
font-size: 16px;
font-weight: bold;
letter-spacing: 0.04em;
}
.section-count {
background: var(--bg-inner);
color: var(--text-muted);
border: 1px solid var(--border);
border-radius: 10px;
padding: 2px 10px;
font-size: 10px;
letter-spacing: 0.05em;
}
.section-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-left: 3px solid var(--accent);
border-radius: 6px;
overflow: hidden;
}
/* ── TABLE ── */
table {
width: 100%;
border-collapse: collapse;
}
thead tr {
background: var(--bg-inner);
border-bottom: 1px solid var(--border);
}
thead th {
padding: 9px 14px;
text-align: left;
color: var(--text-muted);
font-size: 10px;
font-weight: bold;
letter-spacing: 0.1em;
text-transform: uppercase;
white-space: nowrap;
}
tbody tr {
border-bottom: 1px solid var(--border);
transition: background 0.1s;
}
tbody tr:last-child {
border-bottom: none;
}
tbody tr:hover {
background: var(--bg-hover);
}
tbody td {
padding: 11px 14px;
vertical-align: middle;
font-size: 12px;
line-height: 1.5;
}
/* ── PATH CELL ── */
.cell-path {
display: flex;
align-items: center;
gap: 8px;
white-space: nowrap;
}
.path-text {
color: var(--text);
font-weight: bold;
}
.copy-btn {
display: inline-flex;
align-items: center;
justify-content: center;
background: none;
border: none;
cursor: pointer;
color: var(--text-muted);
padding: 3px;
border-radius: 3px;
opacity: 0;
transition:
color 0.15s,
opacity 0.15s;
flex-shrink: 0;
}
tbody tr:hover .copy-btn {
opacity: 1;
}
.copy-btn:hover {
color: var(--accent);
}
.copy-btn.copied {
color: var(--success) !important;
opacity: 1 !important;
}
/* ── METHOD BADGE ── */
.method {
display: inline-block;
padding: 3px 10px;
border-radius: 4px;
font-size: 10px;
font-weight: bold;
letter-spacing: 0.08em;
white-space: nowrap;
font-family: "Courier New", Courier, monospace;
}
.method-GET {
background: #002535;
color: #00f5ff;
border: 1px solid rgba(0, 245, 255, 0.25);
}
.method-POST {
background: #00251a;
color: #00ff88;
border: 1px solid rgba(0, 255, 136, 0.25);
}
.method-PUT {
background: #251a00;
color: #ffaa00;
border: 1px solid rgba(255, 170, 0, 0.25);
}
.method-DELETE {
background: #250000;
color: #ff3b3b;
border: 1px solid rgba(255, 59, 59, 0.25);
}
/* ── CELLS ── */
.cell-query {
font-size: 11px;
color: var(--text);
max-width: 280px;
word-break: break-word;
}
.old-url {
font-size: 10px;
color: var(--text-muted);
font-family: "Courier New", Courier, monospace;
word-break: break-all;
user-select: all;
cursor: text;
max-width: 380px;
line-height: 1.6;
}
/* ── HIGHLIGHT ── */
mark {
background: #251a00;
color: #ffaa00;
border-radius: 2px;
padding: 0 2px;
font-family: inherit;
font-size: inherit;
}
/* ── NO RESULTS ── */
#no-results {
display: none;
text-align: center;
color: var(--text-muted);
font-size: 13px;
padding: 60px 0;
letter-spacing: 0.05em;
}
/* ── FOOTER ── */
#footer {
text-align: center;
color: var(--text-muted);
font-size: 11px;
padding: 28px 0 8px;
border-top: 1px solid var(--border);
margin-top: 12px;
letter-spacing: 0.04em;
}
#footer a {
color: var(--accent);
text-decoration: none;
}
#footer a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<!-- ═══ HEADER ═══ -->
<header id="top-header">
<div id="header-left">
<span id="header-brand">DEREZ.AI</span>
<span id="header-sep">/</span>
<span id="header-sub">API Reference</span>
</div>
<div id="header-badge">— endpoints</div>
</header>
<!-- ═══ SEARCH ═══ -->
<div id="search-wrap">
<div id="search-inner">
<div id="search-box-wrap">
<svg
id="search-icon"
width="15"
height="15"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<circle cx="11" cy="11" r="8" />
<line x1="21" y1="21" x2="16.65" y2="16.65" />
</svg>
<input
id="search-input"
type="text"
placeholder="Search paths, methods, payloads, UUIDs…"
autocomplete="off"
spellcheck="false"
/>
</div>
<div id="search-counter">
<span class="cnt" id="cnt-vis"></span> /
<span class="cnt" id="cnt-tot"></span> endpoints
</div>
</div>
</div>
<!-- ═══ MAIN ═══ -->
<main id="main">
<!-- /agent/list -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/agent/list</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/agent/list</span
><button
class="copy-btn"
data-path="/agent/list"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query">?email=</span></td>
<td>List all agents for a user</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/73b31740-d2c7-46d7-ab71-7a3fef5f77ff</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /agent/info -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/agent/info</span>
<span class="section-count">2 endpoints</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/agent/info</span
><button
class="copy-btn"
data-path="/agent/info"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query">?uuid=</span></td>
<td>Get agent server details</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/e01d06a3-14c3-4e4e-830f-7d4be9a5f529</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/agent/info</span
><button
class="copy-btn"
data-path="/agent/info"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td>
<span class="cell-query"
>{uuid, key, value}</span
>
</td>
<td>
Set agent metadata — name/title
(key:"comment"), wizard flag (key:"WIZZARD")
</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/e01d06a3-14c3-4e4e-830f-7d4be9a5f529</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /agent/key -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/agent/key</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text">/agent/key</span
><button
class="copy-btn"
data-path="/agent/key"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query">?uuid=</span></td>
<td>Get API key info for an agent</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/1f1a6a11-727b-4965-a59a-fde77806d27f</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /agent/password -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/agent/password</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/agent/password</span
><button
class="copy-btn"
data-path="/agent/password"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td>
<span class="cell-query"
>{uuid, email, password}</span
>
</td>
<td>Update instance root password</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/51098cf4-ecfd-4db4-8977-db04f01ce2b1</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /agent/service/restart -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/agent/service/restart</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/agent/service/restart</span
><button
class="copy-btn"
data-path="/agent/service/restart"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td>
<span class="cell-query"
>{uuid, email, action:"restart"}</span
>
</td>
<td>Restart agent server</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/dac205df-66e0-4728-90e5-d784cde167af</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /agent/service/backup -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/agent/service/backup</span>
<span class="section-count">3 endpoints</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/agent/service/backup</span
><button
class="copy-btn"
data-path="/agent/service/backup"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query">?uuid=</span></td>
<td>List backups for agent</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/30eaa32f-378a-4963-9d80-533229d25766</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/agent/service/backup</span
><button
class="copy-btn"
data-path="/agent/service/backup"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td><span class="cell-query">{uuid}</span></td>
<td>Create a new backup</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/30eaa32f-378a-4963-9d80-533229d25766</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/agent/service/backup</span
><button
class="copy-btn"
data-path="/agent/service/backup"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-PUT">PUT</span>
</td>
<td>
<span class="cell-query"
>{uuid, email, action:"restore",
archive_name}</span
>
</td>
<td>Restore a backup</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/30eaa32f-378a-4963-9d80-533229d25766</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /account/login -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/account/login</span>
<span class="section-count">2 endpoints</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/account/login</span
><button
class="copy-btn"
data-path="/account/login"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td>
<span class="cell-query"
>{email, password}</span
>
</td>
<td>Sign in — returns {sessionid}</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/e256310a-6627-45ba-a221-599751943fe6</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/account/login</span
><button
class="copy-btn"
data-path="/account/login"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-DELETE"
>DELETE</span
>
</td>
<td>
<span class="cell-query"
>{sessionid} + X-Session-Id header</span
>
</td>
<td>Sign out</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/e256310a-6627-45ba-a221-599751943fe6</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /account/password/init_change -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path"
>/account/password/init_change</span
>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/account/password/init_change</span
><button
class="copy-btn"
data-path="/account/password/init_change"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td><span class="cell-query">{email}</span></td>
<td>Request password reset email</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/c2ce0eba-eb26-405d-8a90-8d982ec30698</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /account/password/change -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/account/password/change</span>
<span class="section-count">2 endpoints</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/account/password/change</span
><button
class="copy-btn"
data-path="/account/password/change"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td>
<span class="cell-query"
>{email, password}</span
>
</td>
<td>Change password while logged in</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/4644f196-a31c-4d1a-b76e-03e9afe39302</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/account/password/change</span
><button
class="copy-btn"
data-path="/account/password/change"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-PUT">PUT</span>
</td>
<td>
<span class="cell-query"
>{token, password, email}</span
>
</td>
<td>Confirm password reset from email link</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/c2ce0eba-eb26-405d-8a90-8d982ec30698</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /account/contract -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/account/contract</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/account/contract</span
><button
class="copy-btn"
data-path="/account/contract"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query">?uuid=</span></td>
<td>Get contract / subscription details</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/18591766-147e-4bcb-b9ac-b0f9a92e74bf</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /admin/dns -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/admin/dns</span>
<span class="section-count">3 endpoints</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text">/admin/dns</span
><button
class="copy-btn"
data-path="/admin/dns"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query"></span></td>
<td>List DNS records</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/4ad0c89f-ab8c-45ee-bad1-9321ce94dd64</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text">/admin/dns</span
><button
class="copy-btn"
data-path="/admin/dns"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td>
<span class="cell-query"
>{action:"create", name, type, content,
ttl, is_disabled}</span
>
</td>
<td>Create DNS record</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/4ad0c89f-ab8c-45ee-bad1-9321ce94dd64</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text">/admin/dns</span
><button
class="copy-btn"
data-path="/admin/dns"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-DELETE"
>DELETE</span
>
</td>
<td>
<span class="cell-query">{name, type}</span>
</td>
<td>Delete DNS record</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/4ad0c89f-ab8c-45ee-bad1-9321ce94dd64</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /admin/instance -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/admin/instance</span>
<span class="section-count">3 endpoints</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/admin/instance</span
><button
class="copy-btn"
data-path="/admin/instance"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query"></span></td>
<td>List all instances</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/bb369f27-244c-4f8a-869b-f787050619a2</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/admin/instance</span
><button
class="copy-btn"
data-path="/admin/instance"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-PUT">PUT</span>
</td>
<td>
<span class="cell-query"
>{uuid, ssh_port, ram, cpu}</span
>
</td>
<td>Edit instance metadata</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/bb369f27-244c-4f8a-869b-f787050619a2</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/admin/instance</span
><button
class="copy-btn"
data-path="/admin/instance"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-DELETE"
>DELETE</span
>
</td>
<td><span class="cell-query">{uuid}</span></td>
<td>Delete instance</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/bb369f27-244c-4f8a-869b-f787050619a2</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /admin/key -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/admin/key</span>
<span class="section-count">2 endpoints</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text">/admin/key</span
><button
class="copy-btn"
data-path="/admin/key"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query"></span></td>
<td>List all API keys (admin)</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/a001374f-d8c0-4430-9b47-9f1e9ab134c3</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text">/admin/key</span
><button
class="copy-btn"
data-path="/admin/key"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-DELETE"
>DELETE</span
>
</td>
<td><span class="cell-query">{name}</span></td>
<td>Delete API key</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/a001374f-d8c0-4430-9b47-9f1e9ab134c3</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /admin/backup-repo -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/admin/backup-repo</span>
<span class="section-count">2 endpoints</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/admin/backup-repo</span
><button
class="copy-btn"
data-path="/admin/backup-repo"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query"></span></td>
<td>List backup repositories</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/69c0c632-df3b-457f-affe-b725f217f9a2</span
>
</td>
</tr>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/admin/backup-repo</span
><button
class="copy-btn"
data-path="/admin/backup-repo"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-DELETE"
>DELETE</span
>
</td>
<td><span class="cell-query">{id}</span></td>
<td>Delete backup repository</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/69c0c632-df3b-457f-affe-b725f217f9a2</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /admin/server -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/admin/server</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/admin/server</span
><button
class="copy-btn"
data-path="/admin/server"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-GET">GET</span>
</td>
<td><span class="cell-query"></span></td>
<td>Server health and monitoring data</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/78c0c2b8-e497-4d44-8f26-fec34217513c</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /etc/signup -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/etc/signup</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/etc/signup</span
><button
class="copy-btn"
data-path="/etc/signup"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td>
<span class="cell-query"
>{email, password, agent,
location}</span
>
</td>
<td>
Create account and hire agent — returns
{checkout_url}
</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/4de196b7-2ad2-4f9a-9b4d-dc8d3b30865b</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /etc/coupon -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/etc/coupon</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/etc/coupon</span
><button
class="copy-btn"
data-path="/etc/coupon"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td><span class="cell-query">{code}</span></td>
<td>Validate and apply coupon code</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/fd6375cb-6d73-4482-bfa3-ef8365f43a67</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /etc/chat -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/etc/chat</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text">/etc/chat</span
><button
class="copy-btn"
data-path="/etc/chat"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td>
<span class="cell-query"
>{message, sessionId, email}</span
>
</td>
<td>Support chat message</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/a58d00c4-f0c9-40cd-bb50-4f45f0442ef0</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- /etc/referral -->
<div class="section" data-section>
<div class="section-header">
<span class="section-path">/etc/referral</span>
<span class="section-count">1 endpoint</span>
</div>
<div class="section-card">
<table>
<thead>
<tr>
<th>Path</th>
<th>Method</th>
<th>Query / Body</th>
<th>What it does</th>
<th>Old Webhook URL</th>
</tr>
</thead>
<tbody>
<tr data-row>
<td>
<div class="cell-path">
<span class="path-text"
>/etc/referral</span
><button
class="copy-btn"
data-path="/etc/referral"
title="Copy path"
>
<svg
width="12"
height="12"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect
x="9"
y="9"
width="13"
height="13"
rx="2"
ry="2"
/>
<path
d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
/>
</svg>
</button>
</div>
</td>
<td>
<span class="method method-POST">POST</span>
</td>
<td>
<span class="cell-query"
>{referrer, friend_name, friend_email,
uuid}</span
>
</td>
<td>Send referral invite</td>
<td>
<span class="old-url"
>https://n8n.derez.ai/webhook/5bb4169d-284a-4006-8952-fcc325da2d22</span
>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="no-results">No endpoints match your search.</div>
<footer id="footer">
Base URL &nbsp;&nbsp;
<a href="https://n8n.derez.ai/webhook/"
>https://n8n.derez.ai/webhook/&lt;ID&gt;/&lt;function&gt;</a
>
</footer>
</main>
<script>
(function () {
"use strict";
const allRows = Array.from(
document.querySelectorAll("tr[data-row]"),
);
const sections = Array.from(
document.querySelectorAll("[data-section]"),
);
const total = allRows.length;
// Cache original cell HTML for highlight restore
const originals = allRows.map(function (row) {
return Array.from(row.querySelectorAll("td")).map(
function (td) {
return td.innerHTML;
},
);
});
// Init counters
document.getElementById("header-badge").textContent =
total + " endpoints";
document.getElementById("cnt-tot").textContent = total;
document.getElementById("cnt-vis").textContent = total;
// Copy-path buttons
document.addEventListener("click", function (e) {
var btn = e.target.closest(".copy-btn");
if (!btn) return;
var path =
"https://n8n.derez.ai/webhook" +
btn.getAttribute("data-path");
var svgOrig = btn.innerHTML;
var svgCheck =
'<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>';
function flash() {
btn.classList.add("copied");
btn.innerHTML = svgCheck;
setTimeout(function () {
btn.classList.remove("copied");
btn.innerHTML = svgOrig;
}, 1400);
}
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard
.writeText(path)
.then(flash)
.catch(flash);
} else {
var ta = document.createElement("textarea");
ta.value = path;
ta.style.cssText = "position:fixed;opacity:0";
document.body.appendChild(ta);
ta.select();
try {
document.execCommand("copy");
} catch (x) {}
document.body.removeChild(ta);
flash();
}
});
// Search
var input = document.getElementById("search-input");
var cntVis = document.getElementById("cnt-vis");
var noRes = document.getElementById("no-results");
function escRe(s) {
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function rowText(row) {
return Array.from(row.querySelectorAll("td"))
.map(function (td) {
return td.textContent;
})
.join(" ");
}
function restore(row, idx) {
var cells = row.querySelectorAll("td");
originals[idx].forEach(function (html, i) {
if (cells[i]) cells[i].innerHTML = html;
});
}
function hlNodes(node, re) {
if (node.nodeType === 3) {
var v = node.nodeValue;
re.lastIndex = 0;
if (!re.test(v)) return;
re.lastIndex = 0;
var wrap = document.createElement("span");
wrap.innerHTML = v
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(re, function (m) {
return (
"<mark>" +
m
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;") +
"</mark>"
);
});
re.lastIndex = 0;
node.parentNode.replaceChild(wrap, node);
return;
}
if (/^(SCRIPT|STYLE|BUTTON|SVG|svg)$/.test(node.nodeName))
return;
Array.from(node.childNodes).forEach(function (c) {
hlNodes(c, re);
});
}
function applyHL(row, re) {
var idx = allRows.indexOf(row);
var cells = row.querySelectorAll("td");
originals[idx].forEach(function (html, i) {
if (!cells[i]) return;
var div = document.createElement("div");
div.innerHTML = html;
hlNodes(div, re);
re.lastIndex = 0;
cells[i].innerHTML = div.innerHTML;
});
}
input.addEventListener("input", function () {
var q = this.value.trim();
if (!q) {
allRows.forEach(function (row, i) {
restore(row, i);
row.style.display = "";
});
sections.forEach(function (s) {
s.style.display = "";
});
cntVis.textContent = total;
noRes.style.display = "none";
return;
}
var re = new RegExp(escRe(q), "gi");
var vis = 0;
allRows.forEach(function (row, i) {
re.lastIndex = 0;
if (re.test(rowText(row))) {
row.style.display = "";
re.lastIndex = 0;
applyHL(row, re);
vis++;
} else {
restore(row, i);
row.style.display = "none";
}
});
sections.forEach(function (sec) {
var any = Array.from(
sec.querySelectorAll("tr[data-row]"),
).some(function (r) {
return r.style.display !== "none";
});
sec.style.display = any ? "" : "none";
});
cntVis.textContent = vis;
noRes.style.display = vis === 0 ? "block" : "none";
});
})();
</script>
</body>
</html>