API-Dokumentation

Ab Impressum Plus Version 1.1.0 kann die REST-API von WordPress verwendet werden, um Daten aus Impressum Plus abzufragen oder zu ändern.

Authentifizierung

Impressum Plus bringt eine integrierte Basic-Authentifizierung mit. Diese funktioniert entweder über das Format Benutzername:Passwort oder über einen Token, der aus der Base64-Checksumme des Strings Benutzername:Passwort besteht. Dabei ist Benutzername immer der Benutzername eines Administrator-Benutzerkontos und Passwort dessen Passwort.

Beispiel:

curl -i  -H "Authorization: Basic QmVudXR6ZXJuYW1lOlBhc3N3b3J0" https://www.domain.tld/wp-json/impressum-plus/v1/all

Struktur

Die WordPress-REST-API liefert immer eine JSON-formatierte Zeichenkette zurück.

Fehlerbehandlung

Impressum Plus nutzt die in WordPress integrierte Fehlerbehandlung für REST-API-Aufrufe. Diese besteht immer aus einem Fehlercode und einer Fehlernachricht. Optional sind weitere Daten, wie beispielsweise ein Statuscode.

Beispiel rest_not_found:

{
    "code": "rest_not_found",
    "message": "Option "test" existiert nicht.",
    "data": {
        "status": 404
    }
}

GET-Requests

Impressumsdaten

Um Impressumsdaten per API zu beziehen, lautet die URL-Struktur:

/wp-json/impressum-plus/v1/<option>

<option> kann folgende Zeichenkette sein:

  • all – Gibt alle vorhandenen Werte des Impressums zurück
  • country – Gibt das Land zurück
  • legal_entity – Gibt die Rechtsform zurück
  • name – Gibt den Namen zurück
  • address – Gibt die Adresse zurück
  • address_alternative – Gibt die alternative Adresse zurück
  • email – Gibt die E-Mail-Adresse zurück
  • phone – Gibt die Telefonnummer zurück
  • fax – Gibt die Faxnummer zurück
  • press_law_person – Gibt die verantwortliche Person für den Inhalt nach § 55 Abs. 2 RStV zurück
  • vat_id – Gibt die Umsatzsteuer-ID zurück
  • coverage – Gibt den Geltungsbereich zurück
  • free_text – Gibt den Freitext zurück
  • inspecting_authority – Gibt die Aufsichtsbehörde zurück
  • register – Gibt das Register zurück
  • business_id – Gibt die Wirtschafts-Identifikationsnummer zurück
  • representative – Gibt den/die Vertretungsberechtigte/n zurück
  • capital_stock – Gibt das Grundkapital zurück
  • pending_deposits – Gibt die Ausstehenden Anlagen zurück
  • professional_association – Gibt die Berufsgenossenschaft zurück
  • legal_job_title Gibt die Gesetzliche Berufsbezeichnung zurück
  • professional_regulations – Gibt die Berufsrechtliche Regelungen zurück
  • press_law_checkbox – Gibt 1 zurück, wenn journalistischer/redaktioneller Inhalt vorhanden ist
  • data_protection_officer_name – Gibt den Namen des Datenschutzbeauftragten zurück
  • data_protection_officer_address – Gibt die Adresse des Datenschutzbeauftragten zurück
  • data_protection_officer_email – Gibt die E-Mail-Adresse des Datenschutzbeauftragten zurück
  • data_protection_officer_phone – Gibt die Telefonnummer des Datenschutzbeauftragten zurück
  • social_media_facebook – Gibt das Facebook-Profil zurück
  • social_media_instagram – Gibt das Instagram-Profil zurück
  • social_media_pinterest – Gibt das Pinterest-Profil zurück
  • social_media_twitter – Gibt das Twitter-Profil zurück

Beispiel:

{
    "country": "<string>",
    "legal_entity": "<string>",
    "name": "<string>",
    "address": "<string>",
    "address_alternative": "<string>",
    "email": "<string>",
    "phone": "<string>",
    "fax": "<string>",
    "press_law_person": "<string>",
    "vat_id": "<string>",
    "coverage": "<string>",
    "free_text": "<string>",
    "inspecting_authority": "<string>",
    "register": "<string>",
    "business_id": "<string>",
    "representative": "<string>",
    "capital_stock": "<string>",
    "pending_deposits": "<string>",
    "professional_association": "<string>",
    "legal_job_title": "<string>",
    "professional_regulations": "<string>",
    "press_law_checkbox": "<string>",
    "data_protection_officer_name": "<string>",
    "data_protection_officer_address": "<string>",
    "data_protection_officer_email": "<string>",
    "data_protection_officer_phone": "<string>",
    "social_media_facebook": "<string>",
    "social_media_instagram": "<string>",
    "social_media_pinterest": "<string>",
    "social_media_twitter": "<string>"
}

Datenschutz-Daten

Um Datenschutz-Daten per API zu beziehen, lautet die URL-Struktur:

/wp-json/impressum-plus/v1/privacy/<option>

<option> kann folgende Zeichenkette sein:

  • all – Gibt alle vorhandenen Werte der Datenschutzerklärung zurück
  • cookie_usage – Gibt 1 zurück, wenn Cookies genutzt werden
  • logfile_days – Gibt die Anzahl in Tagen zurück, für deren Dauer Serverlogs gespeichert werden
  • logfile_ip_shortening – Gibt 1 zurück, wenn die IP-Adressen in den Serverlogs gekürzt werden
  • contact_form_usage – Gibt 1 zurück, wenn Kontaktformulare genutzt werden
  • comment_usage – Gibt 1 zurück, wenn die Kommentarfunktion genutzt wird
  • comment_subscription_usage – Gibt 1 zurück, wenn Kommentare abonniert werden können
  • shop_usage – Gibt 1 zurück, wenn ein Shop-System genutzt wird
  • contract_usage – Gibt 1 zurück, wenn über die Website Verträge geschlossen werden
  • google_analytics_usage – Gibt 1 zurück, wenn Google Analytics genutzt wird
  • google_analytics_id – Gibt die Google Analytics ID zurück
  • google_analytics_anonymize_ip – Gibt 1 zurück, wenn die IP-Adressen in Google Analytics gekürzt werden
  • google_analytics_remarketing_usage – Gibt 1 zurück, wenn Google Analytics Remarketing genutzt wird
  • google_ads_usage – Gibt 1 zurück, wenn Google Ads genutzt wird
  • google_adsense_usage – Gibt 1 zurück, wenn Google AdSense genutzt wird
  • google_maps_usage – Gibt 1 zurück, wenn Google Maps genutzt wird
  • google_fonts_usage – Gibt 1 zurück, wenn Google Fonts genutzt werden
  • matomo_usage – Gibt 1 zurück, wenn Matomo genutzt wird
  • matomo_url – Gibt die URL zur genutzten Matomo-Instanz zurück
  • matomo_eu_server – Gibt 1 zurück, wenn Matomo auf Servern innerhalb der EU gehostet ist
  • matomo_anonymize_ip – Gibt 1 zurück, wenn die IP-Adressen in Matomo gekürzt werden
  • facebook_pixel_usage – Gibt 1 zurück, wenn der Facebook Pixel genutzt wird
  • ad_tracking_usage – Gibt 1 zurück, wenn Werbung mit Tracking genutzt wird
  • ad_tracking_text – Gibt den Datenschutz-Text von Werbeanbietern mit Tracking zurück
  • applicant_form_usage – Gibt 1 zurück, wenn Formulare für Stellenangebote genutzt werden
  • profiling_usage – Gibt 1 zurück, wenn Profiling genutzt wird
  • health_data_usage – Gibt 1 zurück, wenn Gesundheitsdaten gesammelt werden
  • facebook_social_sharing_usage – Gibt 1 zurück, wenn eine Facebook-Social-Integration genutzt wird
  • pinterest_social_sharing_usage – Gibt 1 zurück, wenn eine Pinterest-Social-Integration genutzt wird
  • twitter_social_sharing_usage – Gibt 1 zurück, wenn eine Twitter-Social-Integration genutzt wird
  • tumblr_social_sharing_usage – Gibt 1 zurück, wenn eine Tumblr-Social-Integration genutzt wird
  • newsletter_usage – Gibt 1 zurück, wenn ein Newsletter-System benutzt wird
  • newsletter_external_usage – Gibt den extern genutzten Newsletter-Anbieter zurück, oder none
  • newsletter_tracking_usage – Gibt 1 zurück, wenn das Newsletter-System Tracking nutzt
  • amazon_partner_usage – Gibt 1 zurück, wenn Amazon-Partner-Links genutzt werden

Beispiel:

{
    "cookie_usage": "<string>",
    "logfile_days": "<string>",
    "logfile_ip_shortening": "<string>",
    "contact_form_usage": "<string>",
    "comment_usage": "<string>",
    "comment_subscription_usage": "<string>",
    "shop_usage": "<string>",
    "contract_usage": "<string>",
    "google_analytics_usage": "<string>",
    "google_analytics_id": "<string>",
    "google_analytics_anonymize_ip": "<string>",
    "google_analytics_remarketing_usage": "<string>",
    "google_ads_usage": "<string>",
    "google_adsense_usage": "<string>",
    "google_maps_usage": "<string>",
    "google_fonts_usage": "<string>",
    "matomo_usage": "<string>",
    "matomo_url": "<string>",
    "matomo_eu_server": "<string>",
    "matomo_anonymize_ip": "<string>",
    "facebook_pixel_usage": "<string>",
    "ad_tracking_usage": "<string>",
    "ad_tracking_text": "<string>",
    "applicant_form_usage": "<string>",
    "profiling_usage": "<string>",
    "health_data_usage": "<string>",
    "facebook_social_sharing_usage": "<string>",
    "pinterest_social_sharing_usage": "<string>",
    "twitter_social_sharing_usage": "<string>",
    "tumblr_social_sharing_usage": "<string>",
    "newsletter_usage": "<string>",
    "newsletter_external_usage": "<string>",
    "newsletter_tracking_usage": "<string>",
    "amazon_partner_usage": "<string>"
}

POST-Requests

Impressumsdaten

Um Impressumsdaten per API zu ändern, lautet die URL-Struktur:

/wp-json/impressum-plus/v1/options

Die Daten können als form-data oder als x-www-form-urlencoded versendet werden.

Beispiel:

curl -d "country=deu&legal_entity=self" -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: Basic QmVudXR6ZXJuYW1lOlBhc3N3b3J0" -X POST https://domain.tld/wp-json/impressum-plus/v1/options

Als Rückgabewert erhält man einen JSON-String mit allen gespeicherten Impressumsdaten.

Datenschutz-Daten

Um Datenschutz-Daten per API zu ändern, lautet die URL-Struktur:

/wp-json/impressum-plus/v1/privacy

Die Daten können als form-data oder als x-www-form-urlencoded versendet werden.

Beispiel:

curl -d "cookie_usage=1" -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: Basic QmVudXR6ZXJuYW1lOlBhc3N3b3J0" -X POST https://domain.tld/wp-json/impressum-plus/v1/privacy

Als Rückgabewert erhält man einen JSON-String mit allen gespeicherten Datenschutz-Daten.

Serveranforderungen

Apache2

Für Apache2 bringt Impressum Plus bereits einen entsprechenden .htaccess-Inhalt mit:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Dies kann auf Wunsch auch deaktiviert werden.

nginx

Eine der folgenden Inhalte müssen in der globalen Variable $_SERVER übergeben werden (beispielsweise über PHP-FPM):

$_SERVER['HTTP_AUTHORIZATION']
$_SERVER['REDIRECT_HTTP_AUTHORIZATION']
$_SERVER['PHP_AUTH_USER'] und $_SERVER['PHP_AUTH_PW']

Beispielkonfiguration der FastCGI-Parameter:

location ~ (?U)\.php(/.*$|$) {
	fastcgi_split_path_info ^((?U).+\.php)(/.+)?$;

	fastcgi_param   QUERY_STRING            $query_string;
	fastcgi_param   REQUEST_METHOD          $request_method;
	fastcgi_param   CONTENT_TYPE            $content_type;
	fastcgi_param   CONTENT_LENGTH          $content_length;

	fastcgi_param   SCRIPT_FILENAME         $request_filename;
	fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
	fastcgi_param   REQUEST_URI             $request_uri;
	fastcgi_param   DOCUMENT_URI            $document_uri;
	fastcgi_param   DOCUMENT_ROOT           $document_root;
	fastcgi_param   SERVER_PROTOCOL         $server_protocol;

	fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
	fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

	fastcgi_param   REMOTE_ADDR             $remote_addr;
	fastcgi_param   REMOTE_PORT             $remote_port;
	fastcgi_param   SERVER_ADDR             $server_addr;
	fastcgi_param   SERVER_PORT             $server_port;
	fastcgi_param   SERVER_NAME             $server_name;

	fastcgi_param   PHP_AUTH_USER           $remote_user;
	fastcgi_param   PHP_AUTH_PW             $http_authorization;

	fastcgi_param   HTTPS                   $https;

	# PHP only, required if PHP was built with --enable-force-cgi-redirect
	fastcgi_param   REDIRECT_STATUS         200;

	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	fastcgi_param PATH_INFO $fastcgi_path_info;
	if (!-e $document_root$fastcgi_script_name) {
		return 404;
	}

	fastcgi_read_timeout 300;
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_index index.php;
}