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
Code-Sprache: Bash (bash)

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 } }
Code-Sprache: JSON / JSON mit Kommentaren (json)

GET-Requests

Impressumsdaten

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

/wp-json/impressum-plus/v1/<option>
Code-Sprache: Bash (bash)

<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>" }
Code-Sprache: JSON / JSON mit Kommentaren (json)

Datenschutz-Daten

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

/wp-json/impressum-plus/v1/privacy/<option>
Code-Sprache: Bash (bash)

<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>" }
Code-Sprache: JSON / JSON mit Kommentaren (json)

POST-Requests

Impressumsdaten

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

/wp-json/impressum-plus/v1/options
Code-Sprache: Bash (bash)

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
Code-Sprache: Bash (bash)

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
Code-Sprache: Bash (bash)

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
Code-Sprache: Bash (bash)

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
Code-Sprache: JavaScript (javascript)

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; }
Code-Sprache: Nginx (nginx)