Enjyn API Services
Professionelle API-Lösungen für Ihre digitalen Projekte. Sicher, schnell und zuverlässig aus Deutschland.
Wählen Sie Ihre API
Entdecken Sie unsere aktuellen API-Lösungen. Weitere APIs sind bereits in Entwicklung und werden bald verfügbar sein.
Enjyn CAPTCHA
Bot-Schutz für Ihre Website. Version 1 mit interaktiven Challenges, Version 2 mit unsichtbarer Verhaltensanalyse.
Avatar Generator
Deterministischer Avatar-Generator basierend auf E-Mail-Adressen. Perfekt für Benutzerprofile.
KYC Verify
Sichere Verifizierung von Ausweisdokumenten durch Foto-Upload. DSGVO-konform mit Auto-Löschung.
Translator Kit
Automatische Website-Übersetzung per Script-Tag. Caching, Cookie-Banner-Support und URL-Parameter.
Cookie Widget
DSGVO-konformes Cookie-Consent-System mit Auto-Erkennung, Script-Blocker und 9 vorgefertigten Themes. Selbstgehostete Alternative zu Cookiebot.
Mail API
Professioneller E-Mail-Versand mit 100% Zustellgarantie. Spam-Filter resistent, zuverlässig und sicher.
API Keys benötigt?
Kontaktieren Sie uns für Ihre persönlichen API-Zugangsdaten.
Enjyn CAPTCHA Dokumentation
🎯 Live Preview — CAPTCHA v1
Testen Sie das interaktive CAPTCHA direkt hier:
📍 Script URL
https://enjyn.de/src/enjyn-captcha.js
✨ Features
- ✓ Drei Challenge-Typen (Drehen, Puzzle, Bildauswahl)
- ✓ Automatische Theme-Erkennung (Hell/Dunkel)
- ✓ Verhaltensanalyse (Mausbewegungen, Klickmuster)
- ✓ Keine Cookies, kein Tracking
- ✓ DSGVO-konform
- ✓ Mehrere Instanzen auf einer Seite
- ✓ Responsive — skaliert automatisch ab 340px Breite
🚀 Integration in 3 Schritten
Schritt 1: Script einbinden
<script src="https://enjyn.de/src/enjyn-captcha.js"></script>
Schritt 2: Container erstellen
<div id="my-captcha"></div>
Schritt 3: Initialisieren
const captcha = EnjynCaptcha.create('my-captcha', {
onSuccess: function(token) {
console.log('CAPTCHA gelöst!', token);
// Formular freigeben
},
onFail: function() {
console.log('CAPTCHA fehlgeschlagen');
}
});
⚙️ Konfigurationsoptionen
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
| onSuccess | Function | - | Callback bei erfolgreicher Lösung (erhält Token) |
| onFail | Function | - | Callback bei falscher Lösung |
| onExpand | Function | - | Callback wenn Challenge geöffnet wird |
| onCollapse | Function | - | Callback wenn Challenge geschlossen wird |
| onLocked | Function | - | Callback bei temporärer Sperre (zu viele Fehlversuche) |
| theme | String | 'auto' | 'dark', 'light' oder 'auto' (erkennt Hintergrund) |
| lockoutTime | Number | 15000 | Sperrzeit in ms nach zu vielen Fehlversuchen |
| privacyUrl | String | enjyn.de/captcha-datenschutz | URL zur Datenschutzerklärung |
💡 Anwendungsbeispiele
Formular-Schutz
EnjynCaptcha.create('form-captcha', {
onSuccess: function(token) {
document.getElementById('submit-btn').disabled = false;
}
});
Download-Schutz mit Theme
EnjynCaptcha.create('download-captcha', {
theme: 'dark',
onSuccess: function(token) {
document.querySelectorAll('.download-btn').forEach(btn => {
btn.disabled = false;
});
}
});
🛡️ ENJYN CAPTCHA v2 — Unsichtbarer Schutz
CAPTCHA v2 arbeitet unsichtbar im Hintergrund. Es analysiert Mausbewegungen, Browser-Fingerprints und Nutzerverhalten, um Bots automatisch zu erkennen. Nur bei Verdacht wird eine interaktive Challenge (v1) eingeblendet.
📍 Script URL
https://enjyn.de/src/enjyn-shield.js
Hinweis: Bei Challenge-Auslösung wird enjyn-captcha.js automatisch nachgeladen.
✨ Features
- ✓ Unsichtbar — kein Widget, keine Nutzerinteraktion nötig
- ✓ Passive Verhaltensanalyse (Maus, Scroll, Tastatur)
- ✓ Browser-Fingerprinting (Canvas, WebGL, Plugins)
- ✓ Erkennung von Selenium, Puppeteer, PhantomJS
- ✓ Apple/iOS-Erkennung (erhöhter Trust-Score)
- ✓ Automatische Challenge bei Verdacht (lädt v1)
- ✓ Persistenz über Seitenreload (sessionStorage)
- ✓ Dezentes UI — kleiner Tab am rechten Rand
- ✓ DSGVO-konform — alle Daten nur clientseitig
🚀 Integration
Methode 1: Script + Auto-Init
<!-- Irgendwo im HTML: --> <div data-enjyn-shield="true"></div> <!-- Vor </body>: --> <script src="https://enjyn.de/src/enjyn-shield.js"></script>
Methode 2: Manuelle Initialisierung
<script src="https://enjyn.de/src/enjyn-shield.js"></script>
<script>
var shield = EnjynShield.init({
threshold: 40,
monitorTime: 3000,
onVerified: function(data) {
console.log('Mensch erkannt, Score:', data.score);
},
onChallenge: function(data) {
console.log('Challenge ausgelöst, Score:', data.score);
}
});
</script>
⚙️ Konfigurationsoptionen
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
| threshold | Number | 40 | Mindest-Score für automatische Verifizierung (0–100) |
| monitorTime | Number | 3000 | Wartezeit in ms bevor erste Bewertung stattfindet |
| theme | String | 'auto' | 'dark', 'light' oder 'auto' |
| privacyUrl | String | enjyn.de/captcha-datenschutz | URL zur Datenschutzerklärung |
| onVerified | Function | - | Callback wenn Nutzer als Mensch erkannt wurde |
| onChallenge | Function | - | Callback wenn Challenge ausgelöst wird |
| onScore | Function | - | Callback bei jeder Score-Berechnung |
📊 Scoring-System
Der Score baut sich durch natürliches Nutzerverhalten auf (0 = Bot, 100 = Mensch):
| Kategorie | Max. Punkte | Beschreibung |
|---|---|---|
| Apple/iOS-Erkennung | +30 | Safari + Apple-Gerät = hoher Trust |
| Browser-Fingerprint | +25 | Sprache, Plugins, Canvas, WebGL, Hardware |
| Mobile-Erkennung | +16 | Touch-Hardware, Multi-Touch, Network API, Bildschirm-Merkmale |
| Maus-/Touch-Verhalten | +42 | Natürliche Kurven, Geschwindigkeit, Richtungswechsel, Touch-Interaktionen |
| Seiteninteraktion | +25 | Verweildauer, Scrollen, Tastatur, Klicks, Formular-Eingaben |
| Automatisierung erkannt | -30 bis -40 | navigator.webdriver, Selenium, Puppeteer, PhantomJS |
🔌 Public API
// Score jederzeit abrufen
var score = EnjynShield.getScore();
// Prüfen ob verifiziert
if (EnjynShield.isHuman()) {
// Formular freigeben, Aktion erlauben
}
// Challenge manuell auslösen
EnjynShield.forceChallenge();
// Shield entfernen
EnjynShield.destroy();
💡 Anwendungsbeispiele
Formular-Schutz (ohne sichtbares CAPTCHA)
<form id="contact-form">
<!-- Formularfelder -->
<button type="submit">Absenden</button>
</form>
<script src="https://enjyn.de/src/enjyn-shield.js"></script>
<script>
EnjynShield.init({ threshold: 40 });
document.getElementById('contact-form').addEventListener('submit', function(e) {
if (!EnjynShield.isHuman()) {
e.preventDefault();
EnjynShield.forceChallenge();
}
});
</script>
🔄 v1 vs. v2 — Welche Version?
| CAPTCHA v1 | CAPTCHA v2 | |
|---|---|---|
| Sichtbarkeit | Sichtbares Widget mit Checkbox | Unsichtbar, kleiner Tab am Rand |
| Nutzeraufwand | Challenge muss gelöst werden | Kein Aufwand (automatisch) |
| Sicherheit | Hoch (visuelle Challenges) | Hoch (Verhaltensanalyse + Challenge-Fallback) |
| Ideal für | Login, Download-Gates, Registrierung | Kontaktformulare, Kommentare, allg. Schutz |
| Integration | Container + JavaScript | Ein Script-Tag reicht |
Avatar Generator Dokumentation
📍 Base URL
https://playground.enjyn.de/avatars/
✨ Features
- ✓ Deterministisch: Gleiche E-Mail = gleicher Avatar
- ✓ Keine Datenspeicherung erforderlich
- ✓ SVG-Format für perfekte Skalierung
- ✓ Anpassbare Größe (32-512px)
- ✓ Automatisches Browser-Caching
- ✓ Einfache URL-basierte Integration
📋 Parameter
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
| String | Ja | - | E-Mail-Adresse für Avatar | |
| size | Integer | Nein | 256 | Größe in Pixel (32-512) |
🚀 Schnellstart
HTML
<img src="https://playground.enjyn.de/avatars/?email=user@example.com&size=128"
alt="Avatar">
JavaScript
function getAvatarUrl(email, size = 256) {
const baseUrl = 'https://playground.enjyn.de/avatars/';
return `${baseUrl}?email=${email}&size=${size}`;
}
PHP
function getAvatarUrl($email, $size = 256) {
$baseUrl = 'https://playground.enjyn.de/avatars/';
$params = http_build_query(['email' => $email, 'size' => $size]);
return $baseUrl . '?' . $params;
}
KYC Verify Dokumentation
🧪 System testen
📍 API Endpoint
https://api.verify.enjyn.de
✨ Features
- ✓ Foto-Upload von Ausweisen (Vorder-/Rückseite)
- ✓ Automatische Datenextraktion
- ✓ QR-Code für mobile Verifizierung
- ✓ DSGVO-konform
- ✓ Auto-Löschung (Bilder 24h, Sessions 7 Tage)
- ✓ Sichere Token-basierte Validierung
🔌 API Endpoints
1. Session erstellen
POST /api/v1/verify
{
"vorname": "Max",
"nachname": "Mustermann",
"geburtsdatum": "01.01.1990",
"return_url": "https://ihre-website.de/callback.html"
}
Response
{
"success": true,
"session_id": "uuid",
"token": "secure-token",
"verify_url": "https://api.verify.enjyn.de/verify/token",
"qr_url": "https://api.verify.enjyn.de/api/v1/qr-code/token"
}
2. Status sicher abrufen
GET /api/v1/get-result/{session_id}
Response (erfolgreich)
{
"success": true,
"status": "verified",
"vorname": "Max",
"nachname": "Mustermann",
"geburtsdatum": "01.01.1990",
"verified_at": "2025-11-01T06:30:45"
}
📋 Status-Werte
| Status | Beschreibung |
|---|---|
| pending | Wartet auf Benutzer |
| processing | Bilder werden verarbeitet |
| verified | ✅ Erfolgreich |
| failed | ❌ Fehlgeschlagen |
🚀 Integration
// 1. Session erstellen
const response = await fetch('https://api.verify.enjyn.de/api/v1/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
vorname: 'Max',
nachname: 'Mustermann',
geburtsdatum: '01.01.1990',
return_url: 'https://ihre-website.de/callback.html'
})
});
const data = await response.json();
// 2. Benutzer zur Verifizierung weiterleiten
window.location.href = data.verify_url;
// 3. Nach Callback: Status sicher validieren
const sessionId = new URLSearchParams(window.location.search).get('session_id');
const result = await fetch(
`https://api.verify.enjyn.de/api/v1/get-result/${sessionId}`
);
const verification = await result.json();
if (verification.status === 'verified') {
console.log('✓ Verifiziert:', verification.vorname);
}
⚠️ Wichtiger Sicherheitshinweis
status Parameter in der Callback-URL kann manipuliert werden!Verwenden Sie IMMER
/api/v1/get-result/{session_id} zur sicheren Validierung.
Enjyn Translator Kit Dokumentation
📍 Script URL
https://playground.enjyn.de/translator-kit.js
✨ Features
- ✓ Ein Script-Tag – Website wird automatisch erkannt
- ✓ Widget erscheint unten rechts (konfigurierbar)
- ✓ Automatisches Caching auf dem Server
- ✓ Mehrere Sprachen (EN, NL, FR, ES und mehr)
- ✓ URL-Parameter für direkte Sprachlinks
- ✓ Cookie-Banner kompatibel
- ✓ Texte vom Übersetzen ausschließbar
- ✓ JavaScript API verfügbar
🚀 Integration (eine Zeile reicht)
<script src="https://playground.enjyn.de/translator-kit.js"></script>
Das Widget erscheint automatisch unten rechts und die Website wird erkannt.
⚙️ Konfigurationsoptionen
| Attribut | Standard | Beschreibung |
|---|---|---|
| data-site | Auto (aus URL) | Website-Name für den Cache-Ordner auf dem Server |
| data-languages | en,nl,fr,es | Welche Sprachen angeboten werden (kommagetrennt) |
| data-source | de | Quellsprache der Website |
| data-position | bottom-right | Position des Widgets (bottom-right, bottom-left, top-right, top-left) |
| data-preloader | true | Ladebildschirm bei vielen Texten anzeigen |
| data-threshold | 15 | Ab wie vielen neuen Texten der Preloader erscheint |
| data-cookie-check | – (deaktiviert) | Wartet auf bestimmten Cookie bevor Widget erscheint |
💡 Anwendungsbeispiele
Minimal (empfohlen)
<script src="https://playground.enjyn.de/translator-kit.js"></script>
Nur Englisch, unten links
<script src="https://playground.enjyn.de/translator-kit.js"
data-languages="en"
data-position="bottom-left">
</script>
Mit Cookie-Banner-Check
<script src="https://playground.enjyn.de/translator-kit.js"
data-cookie-check="cookies_accepted">
</script>
Alles angepasst
<script src="https://playground.enjyn.de/translator-kit.js"
data-site="shop.beispiel.de"
data-languages="en,fr"
data-position="top-right"
data-preloader="false">
</script>
🔗 URL-Parameter
Nutzer können Seiten direkt in einer Sprache aufrufen:
https://meine-website.de/?en → Englisch https://meine-website.de/?fr → Französisch https://meine-website.de/?nl → Niederländisch https://meine-website.de/?es → Spanisch Auch mit anderen Parametern: https://meine-website.de/seite.php?en&id=123
🚫 Texte vom Übersetzen ausschließen
Füge data-no-translate="true" zum Element hinzu:
<span data-no-translate="true">Dieser Text bleibt immer deutsch</span> <div data-no-translate="true">Ganzer Bereich wird nicht übersetzt</div>
🛠️ JavaScript API
Das Widget stellt globale Funktionen bereit:
EnjynTranslator.switchLang('en') → Wechselt zu Englisch
EnjynTranslator.getLang() → Gibt aktuelle Sprache zurück
EnjynTranslator.config → Zeigt Konfiguration
💾 Cache
Übersetzungen werden automatisch auf dem Server gespeichert. Der erste Besucher löst die Übersetzung aus – alle weiteren laden sofort aus dem Cache.
/lang/meine-website.de/en.json /lang/meine-website.de/fr.json /lang/andere-seite.com/en.json
Enjyn Cookie Widget Dokumentation
🍪 100% DSGVO-konform · Kostenlos für immer
Selbstgehostete Alternative zu Cookiebot und Usercentrics — ohne Abo, ohne Datenweitergabe an Drittanbieter.
📍 Script URL
https://enjyn.de/src/enjyn-cookie.php
✨ Features
- ✓ Ein Script-Tag – sofort einsatzbereit
- ✓ Automatische Cookie-Erkennung (~50 bekannte Tracker, mit Wildcards)
- ✓ Script- und Iframe-Blocker: Tracker laden erst NACH Zustimmung
- ✓ Vereinheitlichter Banner mit direkt sichtbaren Kategorien
- ✓ Dynamischer Button-Text („Alle akzeptieren" ↔ „Auswahl speichern")
- ✓ 9 vorgefertigte Themes + Live-Anpassung (Glasmorphismus, Neon, Brutal …)
- ✓ Rechtstext-Lesemodus (automatische Erkennung, kompakter Banner)
- ✓ Mehrsprachig (DE / EN, Browser-Erkennung)
- ✓ Datenschutz-Tabelle automatisch via Container
- ✓ Quarantäne-Kategorie für unbekannte Cookies
- ✓ Zurück-Button im Footer
- ✓ Reopen-Button für jederzeitigen Widerruf
- ✓ Anonymisierter Consent-Log (DSGVO Art. 7)
- ✓ Mobile-optimiert (Bottom-Sheet mit Inner-Scrolling)
🚀 Integration (eine Zeile reicht)
<script src="https://enjyn.de/src/enjyn-cookie.php" async></script>
Banner erscheint beim ersten Besuch mit direkt sichtbaren Kategorien. Nach Auswahl bleibt ein kleiner Cookie-Button zum Widerrufen.
⚙️ Konfigurationsoptionen
Volle Kontrolle über window.EnjynCookie vor dem Script-Tag:
Allgemein
| Option | Standard | Beschreibung |
|---|---|---|
| site_name | – | Name der Website |
| operator | – | Betreiber-Name |
| contact | – | Datenschutz-Kontakt-E-Mail |
| lang | de | Sprache (de, en) |
| auto_lang | true | Browser-Sprache automatisch erkennen |
| privacy_url | – | Link zur Datenschutzerklärung |
| imprint_url | – | Link zum Impressum |
| consent_lifetime | 180 | Tage bis erneut nachgefragt wird |
| auto_scan | true | Auto-Erkennung von Cookies |
| show_reopen | true | Cookie-Icon in der Ecke nach Consent |
| log_consents | false | Anonymisierten Consent-Log aktivieren |
| log_endpoint | – | URL für Consent-Log-POST |
Design
| Option | Standard | Beschreibung |
|---|---|---|
| primary | #2563eb | Akzentfarbe (Buttons) |
| primary_text | #ffffff | Text-Farbe auf Primary-Buttons |
| position | bottom-right | bottom-right, bottom-left, bottom-center, center |
| theme | auto | Siehe Theme-Liste unten |
| style | modern | modern, minimal, box |
| animation | slide | slide, fade, pop |
| radius | 14px | Ecken-Radius |
| btn_radius | 10px | Button-Ecken-Radius |
| opacity | 1 | Karten-Transparenz (0–1) |
| card_blur | 0 | Glasmorphismus-Blur in px |
| backdrop | true | Verdunkelung im Hintergrund |
| backdrop_blur | 2 | Backdrop-Blur in px |
| backdrop_alpha | 0.35 | Hintergrund-Dunkelheit (0–1) |
| border_width | 1 | Rahmenstärke in px |
| font_scale | 1 | Schriftgrößen-Skalierung (0.85–1.3) |
Rechtstext-Lesemodus
| Option | Standard | Beschreibung |
|---|---|---|
| legal_mode | undefined | true = Modus erzwingen, false = abschalten, undefined = auto-Erkennung |
| legal_paths | [] | Eigene Pfade zusätzlich zu den Standards |
🎨 9 vorgefertigte Themes
| Theme | Beschreibung |
|---|---|
default | Modern, blau, weiß |
dark | Dunkler Modus |
glass | Glasmorphismus, halbtransparent mit Blur |
glass-dark | Dunkler Glaseffekt |
neon | Knallige Akzente auf schwarz |
minimal-bw | Schwarz/weiß, scharfe Kanten |
pastel | Rosa, weich, sehr rund |
brutal | Hart kantig, gelb, harter Schatten |
soft | Sehr rund, Pill-Buttons, weiche Schatten |
🔘 Adaptive Button-Anzeige
Die Buttons im Banner passen sich automatisch an:
| Situation | Buttons |
|---|---|
| Es gibt optionale Kategorien (Analytics, Marketing …) | [Nur Notwendige] [Alle akzeptieren] |
| User wählt eine Kategorie ab | [Nur Notwendige] [Auswahl speichern] |
| Nur essential, keine optionalen Cookies | [Akzeptieren] (Reject-Button ausgeblendet) |
💡 Anwendungsbeispiele
Minimal (empfohlen)
<script src="https://enjyn.de/src/enjyn-cookie.php" async></script>
Mit eigenen Cookies (inkl. Wildcard)
<script>
window.EnjynCookie = {
site_name: "Meine Website",
primary: "#2563eb",
privacy_url: "/datenschutz",
imprint_url: "/impressum",
categories: {
analytics: {
cookies: [
{ name: "_ga", provider: "Google LLC (USA)",
purpose_de: "Statistik", duration: "2 Jahre",
type: "HTTP-Cookie" },
// Wildcard: matcht _ga_ABCDEF, _ga_XYZ123 etc.
{ name: "_ga_*", provider: "Google LLC (USA)",
purpose_de: "GA4-Session", duration: "2 Jahre" }
]
}
}
};
</script>
<script src="https://enjyn.de/src/enjyn-cookie.php" async></script>
Glas-Design unten mittig
<script>
window.EnjynCookie = {
theme: "glass",
position: "bottom-center",
primary: "#7c3aed",
opacity: 0.7,
card_blur: 20
};
</script>
<script src="https://enjyn.de/src/enjyn-cookie.php" async></script>
🚫 Script-Blocker
Tausche bei Tracking-Scripts src gegen data-src und type gegen "text/plain". Das Widget aktiviert sie erst nach Zustimmung:
<!-- Vorher (DSGVO-Verstoß): lädt SOFORT -->
<script src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"></script>
<!-- Nachher: lädt erst nach Consent -->
<script type="text/plain"
data-cookiecategory="analytics"
data-src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"
async></script>
Iframes (YouTube, Vimeo, Maps)
<iframe data-cookiecategory="marketing"
data-src="https://www.youtube-nocookie.com/embed/VIDEO_ID"
width="560" height="315"></iframe>
🔍 Automatische Cookie-Erkennung
Der Auto-Scanner findet Cookies aus mehreren Quellen:
document.cookie– inkl. Live-Überwachung neu gesetzter CookieslocalStorage+sessionStorageIndexedDB- Drittanbieter-Domains via
PerformanceObserver MutationObserverfür dynamisch eingefügte Scripts/Iframes (z. B. Tag-Manager)
Bekannte Tracker werden via interner Datenbank kategorisiert (Google, Meta, Hotjar, HubSpot …). Unbekannte Cookies landen in einer Quarantäne-Kategorie – standardmäßig deaktiviert.
📦 Quarantäne & Cookie-Zuordnung
Sobald ein Cookie in categories.X.cookies definiert ist (auch via Wildcard), gilt diese Kategorie und der Cookie verschwindet aus der Quarantäne. Zusätzlich gibt es eine Laufzeit-API zum Verschieben:
// Workflow für Quarantäne-Cleanup
EnjynCookie.unknown() // Liste aller unbekannten Cookies
// Pro Cookie zuordnen:
EnjynCookie.assign("xyz_session", "essential", {
provider: "Mein CMS",
purpose_de: "Session-Verwaltung",
duration: "Session",
type: "HTTP-Cookie"
});
📄 Datenschutzerklärung — Auto-Tabelle
Container in deiner Datenschutzerklärung platzieren – das Widget befüllt sie automatisch und ergänzt „bereitgestellt durch Enjyn Gruppe":
| Container | Inhalt |
|---|---|
<div data-enjyn-cookie-table></div> | Komplette Tabelle aller Kategorien |
<div data-enjyn-cookie-table="analytics"></div> | Nur eine Kategorie |
<span data-enjyn-cookie-list></span> | Komma-Liste der Cookie-Namen |
<a data-enjyn-open href="#">...</a> | Öffnet den Settings-Dialog |
<div data-enjyn-placeholder="marketing"></div> | „Inhalt blockiert"-Box für eingebettete Inhalte |
📖 Rechtstext-Lesemodus
Auf rechtlichen Seiten (Datenschutz, Impressum, AGB) wird der Banner automatisch kompakter dargestellt – ohne Backdrop, damit der Text gut lesbar bleibt. Die Kategorien sind hinter einem Ausklappfeld versteckt.
Erkannt werden Standard-Pfade wie /datenschutz, /impressum, /agb, /privacy, /terms. Eigene Pfade können ergänzt werden:
window.EnjynCookie = {
legal_paths: ["/agb", "/widerruf", "/nutzungsbedingungen"]
};
Banner-Text im Lesemodus: „Die Cookies wurden noch nicht akzeptiert, oder es wurde noch keine Einstellung festgelegt. Sie befinden sich aktuell nur im Lesemodus für Rechtsdokumente."
🛠️ JavaScript API
Globale Funktionen unter window.EnjynCookie:
Banner-Aktionen
EnjynCookie.open() → Settings-Dialog öffnen
EnjynCookie.accept() → Alles akzeptieren
EnjynCookie.reject() → Nur Notwendige
EnjynCookie.reset() → Zustimmung verwerfen, Banner erneut zeigen
EnjynCookie.get() → Aktueller Consent als Objekt
EnjynCookie.isAllowed("analytics") → Boolean, ob Kategorie zugestimmt
Design (live)
EnjynCookie.setTheme("glass")
EnjynCookie.setDesign({ primary: "#ff0080", opacity: 0.7, card_blur: 20 })
EnjynCookie.getDesign() → aktuelle Werte als Objekt
EnjynCookie.themes() → Array aller Theme-Namen
Sprache & Datenschutz
EnjynCookie.setLanguage("en") → Sprache wechseln ohne Reset
EnjynCookie.refreshPrivacy() → Datenschutz-Container neu rendern
Auto-Scanner & Zuordnung
EnjynCookie.scan() → Sofort-Scan auslösen
EnjynCookie.found() → Alle erkannten Cookies
EnjynCookie.unknown() → Quarantäne-Liste
EnjynCookie.assign(name, category, meta)
→ Cookie manuell einer Kategorie zuordnen
Event-Listener
EnjynCookie.onChange(function (record) {
if (record.choices.analytics) {
// hier z. B. Google Analytics initialisieren
gtag('js', new Date());
gtag('config', 'G-XXXX');
}
});
🔒 DSGVO-Konformität
- Opt-in: Nicht-essenzielle Kategorien werden ohne Klick nicht aktiviert
- Gleichwertige Buttons: „Nur Notwendige" optisch gleich prominent wie „Alle akzeptieren"
- Granulare Auswahl: Pro Kategorie Toggle-Switch, direkt im Banner sichtbar
- Einfacher Widerruf: Reopen-Button oder
data-enjyn-open - Echter Script-Blocker: Tracker werden vor Consent gar nicht geladen
- Anonymisierter Consent-Log: IP-Subnet + sha256 + tägliches Salt, Salts nach 30 Tagen gelöscht
- Keine externen Assets: kein Google Fonts, kein FontAwesome, alles inline
- Keine Datenübertragung vor Zustimmung: Cookie-DB inline im Bundle
📱 Mobile-Optimierung
- Banner als zentriertes Bottom-Sheet auf Tablets und Smartphones
- Inner-Scrolling: lange Kategorien-Listen scrollen, Buttons + Footer bleiben sichtbar
- Touch-Targets mindestens 44 px hoch
- Cookie-Tabelle wird auf kleinen Screens zum Card-Layout mit Labels
- 3D-Cookie dezenter (56 px statt 78 px)
📜 Lizenz & Wasserzeichen
Das Widget ist kostenlos nutzbar. Das powered by Enjyn Gruppe-Wasserzeichen im Banner und in der Datenschutz-Tabelle ist Lizenzbestandteil und wird sowohl serverseitig als auch clientseitig erzwungen.
Diebstahlschutz: Das Widget funktioniert nur, wenn es von einer autorisierten Domain (Standard: enjyn.de) geladen wird. Bei unautorisierten Kopien zeigt es einen roten Warnbanner und führt keine Funktionen aus.
Enjyn Auth SSO
Enterprise Single Sign-On ohne zusätzliche Kosten
📍 Übersicht
Enjyn Auth SSO ist eine umfassende Single Sign-On Lösung für sichere Benutzerverwaltung über mehrere Anwendungen hinweg. Implementieren Sie zentrale Authentifizierung mit fortgeschrittenen Sicherheitsfeatures.
✨ Funktionen
- Multi-App SSO: Ein Login für alle Ihre Anwendungen
- Zentrale Verwaltung: Verwalten Sie alle Benutzer an einer Stelle
- 2-Faktor-Authentifizierung: E-Mail und App-basierte Codes
- Session Management: Sichere Session-Verwaltung mit automatischem Timeout
- Audit Logging: Vollständige Nachverfolgung aller Login-Aktivitäten
- Verschlüsselte Sessions: AES-256 Verschlüsselung für alle Sessions
🔒 Sicherheitstechniken
Verschlüsselung
- AES-256-CBC: Industrie-Standard für Session-Verschlüsselung
- TLS/SSL 1.3: Verschlüsselte Datenübertragung (HTTPS)
- PBKDF2: Sichere Password-Hashing mit Salt
- bcrypt: Adaptive Password-Hashing für zusätzliche Sicherheit
Token-Management
- JWT-basierte Access Tokens mit 24-Stunden-Gültigkeit
- Refresh Token Rotation zur Verhütung von Token-Replay-Attacken
- Sichere Token-Speicherung in HTTPOnly Cookies
- CSRF-Protection bei Token-Übertragung
2-Faktor-Authentifizierung
- E-Mail-basierte Authentifizierung mit One-Time-Passwords (OTP)
- TOTP (Time-based One-Time Password) für Authenticator-Apps
- Backup-Codes für Account-Recovery
- Rate Limiting gegen Brute-Force-Angriffe
Session-Sicherheit
- Automatisches Session-Timeout nach Inaktivität
- IP-Binding für Sessionen (optional)
- User-Agent-Validierung
- Mehrfach-Sessions pro User mit Verwaltung
Audit & Compliance
- Vollständiges Audit Logging aller Authentifizierungsereignisse
- DSGVO-konform mit Datensparsamkeit
- Deutsche Server-Infrastruktur
- Recht auf Datenlöschung und Datenportabilität
🚀 Nächste Schritte
Nach erfolgreicher Aktivierung erhalten Sie die vollständige technische Dokumentation, API-Endpoints, Code-Beispiele und einen persönlichen Technical Account Manager per E-Mail.
Um Enjyn Auth SSO freizuschalten, kontaktieren Sie bitte unseren Sales-Support:
Jetzt anfragenMail API Dokumentation
📍 API Endpoint
🔑 Authentication
Alle Anfragen müssen einen API Key im Header enthalten:
X-API-Key: IHR_API_KEY
💻 Code Beispiele
Wählen Sie die gewünschten Funktionen aus, um den passenden Code zu generieren:
// Code wird generiert...
// Code wird generiert...
// Code wird generiert...
📊 Response Codes
| Code | Status | Beschreibung |
|---|---|---|
| 200 | OK | E-Mail wurde erfolgreich versendet |
| 400 | Bad Request | Pflichtfelder fehlen (to, subject, body) |
| 401 | Unauthorized | API-Key fehlt oder ist ungültig |
| 429 | Too Many Requests | Rate Limit überschritten |
SQL API Dokumentation
📍 API Endpoint
🔑 Authentication
Alle Anfragen müssen einen gültigen API Key im Header enthalten:
X-API-Key: IHR_API_KEY
📌 Endpoints
Neue Datenbank erstellen
{
"note": "Name der Datenbank (max 50 Zeichen)"
}
DB Name, DB User Werden immer automatisch generiert und können nicht geändert werden. Deshalb geben Sie bitte den Namen der Datenbank zur Zuordnung unter Note an.
Einzelne oder mehrere Datenbanken abrufen (Note, DB Name, DB User, Password, phpMyAdmin URL)
Mehrere DBs mit Komma trennen: /api/databases/db_abc123,db_xyz789
Notiz aktualisieren
{
"note": "Neuer Name"
}
Datenbankpasswort erneuern
Datenbank löschen
💻 Code Beispiele
// Datenbank erstellen
const createDatabase = async () => {
const response = await fetch('ENDPOINT/api/databases', {
method: 'POST',
headers: {
'X-API-Key': 'IHR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
note: 'Meine neue Datenbank'
})
});
const result = await response.json();
console.log(result);
};
// Datenbanken abrufen
const getDatabases = async () => {
const response = await fetch('ENDPOINT/api/databases', {
method: 'GET',
headers: {
'X-API-Key': 'IHR_API_KEY'
}
});
const result = await response.json();
console.log(result);
};
<?php
// Datenbank erstellen
$apiKey = 'IHR_API_KEY';
$apiUrl = 'ENDPOINT/api/databases';
$data = [
'note' => 'Meine neue Datenbank'
];
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-API-Key: ' . $apiKey
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$result = json_decode($response, true);
if ($httpCode === 201) {
echo 'Datenbank erstellt!';
print_r($result);
} else {
echo 'Fehler: ' . $result['error'];
}
?>
import requests
import json
api_key = 'IHR_API_KEY'
api_url = 'ENDPOINT/api/databases'
headers = {
'X-API-Key': api_key,
'Content-Type': 'application/json'
}
# Datenbank erstellen
data = {
'note': 'Meine neue Datenbank'
}
response = requests.post(api_url, headers=headers, data=json.dumps(data))
if response.status_code == 201:
print('Datenbank erstellt!')
print(response.json())
else:
print(f'Fehler: {response.json()["error"]}')
# Datenbanken abrufen
response = requests.get(api_url, headers=headers)
if response.status_code == 200:
databases = response.json()['data']
for db in databases:
print(f"DB: {db['db_name']} - {db['note']}")
else:
print(f'Fehler: {response.json()["error"]}')
📊 Response Beispiel
{
"success": true,
"data": [
{
"id": 1,
"db_name": "db_abc12345",
"db_user": "user_xyz98765",
"db_pass": "secure_password_here",
"note": "Meine Webshop Datenbank",
"created_at": "2025-01-15 10:30:00",
"server": "ENDPOINT",
"port": 3306
}
],
"message": "Databases retrieved successfully",
"phpmyadmin_url": "ENDPOINT/phpmyadmin/",
"timestamp": "2025-01-15T10:35:22+01:00"
}
📊 Response Codes
| Code | Status | Beschreibung |
|---|---|---|
| 200 | OK | Anfrage erfolgreich |
| 201 | Created | Datenbank erfolgreich erstellt |
| 400 | Bad Request | Ungültige Anfrage |
| 401 | Unauthorized | API-Key fehlt oder ist ungültig |
| 404 | Not Found | Datenbank nicht gefunden |
| 429 | Too Many Requests | Rate Limit überschritten |
Analytics API Dokumentation
Dokumentation wird zugesendet
Nach erfolgreicher API-Anfrage erhalten Sie die vollständige Dokumentation
sowie Ihre Zugangsdaten per E-Mail.
📍 Übersicht
Preis: 25,00€/Monat
Features:
- Echtzeit-Tracking
- Website erstellung, verwaltung
- Abfrage aller Daten
- White-Label Lösungen
Reseller API Dokumentation
Dokumentation wird zugesendet
Nach erfolgreicher API-Anfrage erhalten Sie die vollständige Dokumentation
sowie Ihre Zugangsdaten per E-Mail.
📍 Übersicht
Preis: Kostenlose Bereitstellung, Pay as you go
Sie zahlen nur für die tatsächlich genutzten Ressourcen
Features:
- White-Label Lösungen
- Automatische Abrechnung
- Partner-Dashboard