Grundsätzlich wird empfohlen, legalweb.io über ein bereits bestehendes Plugin zu nutzen. Alternativ ist ein Abruf aller Daten und Funktionen über die REST-API möglich.

Dashboard

Im Legalweb Dashboard können folgende Funktionen aktiviert und konfiguriert werden:

  • Basisdaten, diese erzeugen:
    • Stammdaten des für die Website Verantwortlichen
  • Impressum-Generator, dieser erzeugt:
    • Impressum HTML
  • Datenschutz-Generator, dieser erzeugt:
    • Datenschutz-Popup
      • je Sprachversion ein HTML
      • je Sprachversion eine Konfigurations-Datei
      • ein JS
      •  
    • Datenschutz-Information HTML
  • AGB-Generator, dieser erzeugt:
    • AGB HTML
    • Widerrufsbelehrung HTML (je nach Konfiguration)
    • AGB-, Widerrufs- und Datenschutzhinweise für den Checkout TXT (je nach Konfiguration)
    • AGB-, Widerrufs- und Datenschutzhinweise für Vertragsabschlüsse außerhalb von Webshops TXT (je nach Konfiguration)
    • Text für den Verzicht auf das Widerrufsrecht bei bestimmten Dienstleistungen TXT (je nach Konfiguration)
    • Text für den Verzicht auf das Widerrufsrecht bei digitalen Produkten TXT (je nach Konfiguration)
  • Legalweb-Check, dieser erzeugt:
    • Legalweb-Badge (nach erfolgreichem Check) HTML

Vorschau

Nach der Aktivierung und der Konfiguration im Dashboard sind die erzeugten Daten in der Vorschau des Dashboard einsehbar und kopierbar.

API

Nach der Aktivierung und der Konfiguration im Dashboard sind die erzeugten Daten über die API abrufbar.

API Request

Die API ist unter der folgenden URL erreichbar:

https://legalweb.io/api

Bei jedem API Request müssen die GUID und die Callback URL im HEADER mitübergeben werden. Der Content-Type des Requests muss "application/x-www-form-urlencoded" sein.

API Requests sind nur zum Zweck des Updates der lokal gespeicherten Daten zulässig. Zeitgesteuerte API Requests zum zweck des Updates sind maximal alle 24 Stunden zulässig.

Alle von der API bezogenen Daten sind lokal zu speichern.

Beispiel: API-Call via Curl in PHP

<?php

$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://legalweb.io/api',
    CURLOPT_HTTPHEADER => array(
        "content-type: application/x-www-form-urlencoded",
        "Guid: 3c0e1033-3691-41d8-a758-fa3b1d402201",
        "Callback: https://meine-webseite.com/?cb=legalwebxyz",
      )
]);


$resp = curl_exec($curl);
curl_close($curl);
// var_dump($resp); // hier könnte der gesamte json string ausgegeben werden

$apiData = json_decode ($resp); // der komplette Response müsste nun zwischengespeichert werden (zB. in der Db, in einem File,...)

$css = $apiData->services->dppopupcss;
$js = $apiData->services->dppopupjs;
$popup_de = $apiData->services->dppopup->de;
$spDsgvoGeneralConfig = $apiData->services->dppopupconfig->spDsgvoGeneralConfig;
$spDsgvoIntegrationConfig = $apiData->services->dppopupconfig->spDsgvoIntegrationConfig;

?>
<!DOCTYPE html>
<html>
<head>
    <style>
       <?= $css ?>;
    </style>
</head>
<body>

<h1>This is a test page</h1>

<script>
    var spDsgvoGeneralConfig = JSON.parse('<?php echo json_encode($spDsgvoGeneralConfig); ?>');
    var spDsgvoIntegrationConfig = JSON.parse('<?php echo json_encode($spDsgvoIntegrationConfig); ?>');
    <?= $js; ?>
</script>
<?= $popup_de ?>;
</body>
</html>

API-Ausgabe

Die Ausgabe der API erfolgt im JSON Format. Es wird immer der komplette Datensatz geliefert. Die Abfrage einzelner Services ist derzeit nicht geplant, da die gewünschten Services ohnehin im Backend konfiguriert wurden.

{
	"lw_api": {
		"mode": "",
		"version": "",
		"description": "API of legalweb.io",
		"url": "https://legalweb.io/api",
		"documentation": "https://legalweb.io/support/api",
		"terms": "https://legalweb.io/shop/agb/"
	},
	"domain": {
		"domain_id": "",
		"domain_guid": "",
		"domain_url": "",
		"domain_callback": "",
		"organisation": "",
		"address": "",
		"city": "",
		"zip": "",
		"country": "",
		"phone": "",
		"email": ""
	},
	"services": {
		"imprint": {
			"de": "",
			"en": ""
		},
		"dpstatement": {
			"de": "",
			"en": ""
		},
		"dppopup": {
			"de": "",
			"en": ""
		},
		"dppopupcss":  ""
		,
		"dppopupjs": ""
		,
                "dppopupconfig": {
			"spDsgvoGeneralConfig": {},
                        "spDsgvoIntegrationConfig": {}
		},
		"contractterms": {
			"de": "",
			"en": ""
		},
		"contractcheckout": {
			"de": "",
			"en": ""
		},
		"contractwithdrawaldigital": {
			"de": "",
			"en": ""
		},
		"contractwithdrawalservice": {
			"de": "",
			"en": ""
		}
	},
	"messages": [{
		        "id": "",
		        "msg": ""
                     }
		]
	}
}

Feldbeschreibung

legalWebApi

  • version: enthält Versionsnummer der API-Struktur im API-Changelog, zählt von 1 aufwärts

domain: enthält Daten zur Domain

  • domain_id: interne ID des Datensatzes der Domain bei legalweb.io. Muss im Plugin ab dem ersten API-Request angezeigt werden.
  • domain_guid: offizieller API-Key. Muss im Plugin eingegeben und danach angezeigt werden.
  • domain_url: Url der Domain. Muss im Plugin ab dem ersten API-Request angezeigt werden.
  • domain_callback: Callback URL der Domain. Muss vom / über das Plugin festgelegt werden. Eine zufallsgenierte URL wird empfohlen.
  • weitere Felder: Stammdaten. Können genutzt werden, um Stammdaten innerhalb der Website zentral zu verwalten.

services: Impressum, Datenschutz, Vertrag

  • imprint: Impressum als HTML. Das Plugin hat das Impressum in der richtigen Sprachversion auf der richtigen Seite einzufügen. Domains, deren Verantwortlicher in Österreich sitzt, geben imprintat, deren Verantwortlicher in Deutschland sitzt, imprintde aus.
  • dpstatement: Datenschutzerklärung als HTML. Das Plugin hat die Datenschutzerklärung in der richtigen Sprachversion auf der richtigen Seite einzufügen.
  • dppopup: HTML Code des Popups. Das Plugin hat das HTML in der richtigen Sprachversion im Template einzufügen.
  • dppopupcss: CSS Code des Popups. Das Plugin hat das CSS im Template einzufügen.
  • dppopupjs: JS des Popups. Das Plugin hat das JS im Template einzufügen.
  • dppopupconfig: Hier werden 2 JS Variablen übertragen, die von "dppopupjs" benötigt werden. Diese JS Variablen müssen vor Ausgabe von "dppopupjs" ausgegeben werden.
  • contractterms: AGB als HTML. Das Plugin hat das HTML in der richtigen Sprachversion auf der richtigen Seite einzufügen.
  • contractcheckout: AGB, Widerrufs und Datenschutz-Klausel für den Checkout.
  • contractwithdrawaldigital: Widerrufs-Verzicht-Klausel für digitale Produkte für den Checkout als Txt-String.
  • contractwithdrawalservice: Widerrufs-Verzicht-Klausel für Dienstleistungen für den Checkout als Txt-String.
  • Badge!
  • messages: Admin-Backend Hinweise. Das Plugin muss den jeweils letzten Hinweis anzeigen, bis er weggeklickt wird. Die Hinweise enthalten einen Link auf den jeweiligen Changelog bei legalweb.io. (So sehen die Admins auch ältere Hinweise.)

Strings

Txt, html, js, css, ... sind im JSON escaped gemäß RFC 7159 Punkt 7. https://tools.ietf.org/html/rfc7159 also z.B. \"Hallo!\".

API Fehlercodes

code Fehlermeldung
10 Keine gültige Domain
20 Kein gültiger Header
30 Keine Guid angegeben
40 Eine ungültige Guid
50 Keine Callback URL angegeben
60  

Client-Side JS API

Bei einem Opt-In oder Opt-Out wird ein CustomEvent "lw-optinout" dispatched. Dem Event wird folgendes als Details übergeben:

  • integrationId: die Id des Dienstes (google-analytics, matomo-analytics, ...)
  • integrationCategory: die Kategorie in welche der Dienst fällt
  • integrationCode: der JS Code Base64 encoded welcher beim Opt-In ausgeführt wird
  • mode: 'optin' oder 'optout'
  • time: new Date()

Mit folgendem Code werden die Events in der Console ausgegeben:

document.querySelector('.sp-dsgvo-privacy-popup').addEventListener('lw-optinout', function (e) {
    console.log('optinout', e.detail);
});

Zusätzlich kann per JS eine Integration aktiviert oder deaktivert werden und ihr Status eruiert werden. Folgende Methoden stehen dafür zur Verfügung

  • lwEnableIntegration(integrationId):void
  • lwDisableIntegration(integrationId):void
  • lwIsIntegrationEnabled(integrationId):bool
  • lwShowPopup():void
  • lwShowNotice():void

Clients / Plugins

Eine Liste mit verfügbaren Clients und eine Auflistung der Anforderungen an Clients finden sich hier.

Cookie-Popup, Datenschutzinformation, Impressum, Allgemeine Geschäftsbedingungen, Widerrufsbelehrung, Checkout-Texte, Legalweb.io Siegel