Für Entwickler · v1.0.0

DomainWarn API

Alles, was im Dashboard steht, gibt es auch per REST-API: Domains anlegen und pausieren, Prüfungen anstoßen, Incidents quittieren, DNS-Änderungen und Verfügbarkeit auswerten. Authentifizierung mit einem API-Token je Organisation, Antworten als JSON, beschrieben in einer OpenAPI-3.1-Spezifikation.

Basis-Adresse
https://api.domainwarn.com/api/v1
Authentifizierung
Authorization: Bearer
Format
JSON · OpenAPI 3.1

Authentifizierung

API-Tokens erzeugen Admins und Owner im Dashboard unter Einstellungen → API. Das Token wird genau einmal im Klartext angezeigt; danach ist nur noch Name, Recht, letzte Nutzung und Ablauf sichtbar. Jeder Aufruf schickt das Token als Bearer-Token und fordert JSON an:

  • Ein Token gilt für genau eine Organisation. Aufrufe für eine andere Organisation antworten mit 404, als gäbe es sie nicht.
  • Optionales Ablaufdatum von 1 bis 730 Tagen; empfohlen sind 90 Tage mit regelmäßiger Erneuerung. Abgelaufene und widerrufene Tokens antworten mit 401.
  • Verlässt der Ersteller die Organisation oder wird die Organisation gelöscht, sind seine Tokens sofort ungültig.
  • Höchstens 20 Tokens je Organisation. Jedes Anlegen und Widerrufen steht im Audit-Log.
Authorization: Bearer <Token>
Accept: application/json

Rechte: read und write

Beim Anlegen wählst du zwischen zwei Rechten. Ein Token hat nie mehr Rechte als ein Mitglied, auch wenn ein Owner es erzeugt hat.

  • read: wie die Rolle Viewer. Alle GET-Endpunkte; jede schreibende Methode antwortet mit 403.
  • write: wie die Rolle Mitglied. Zusätzlich Domains und Kunden anlegen, ändern und löschen, Monitore verwalten, Prüfungen anstoßen und Incidents quittieren.
  • Nie per Token, auch nicht mit write: Konto, Passwort, Zwei-Faktor, Passkeys, Mitglieder, Einladungen, Abrechnung, Benachrichtigungskanäle, Audit-Log, Datenexport und die Token-Verwaltung selbst. Diese Routen antworten mit 403.

Basis-Adresse und Sprache

Alle Endpunkte liegen unter https://api.domainwarn.com/api/v1; die Daten einer Organisation unter /orgs/{organization}. Den Slug findest du in der Adresse des Dashboards, unter Einstellungen → API oder über GET /organizations, das mit einem Token genau die eine Organisation liefert.

Befunde (findings) sind übersetzt: mit dem Header Accept-Language: de oder en bestimmst du die Sprache, ohne Header ist sie Englisch. Alle Zeitpunkte sind ISO 8601 in UTC (Endung Z), IDs sind UUIDs.

Limits

  • 300 Anfragen je Minute und Token, unabhängig von der Dashboard-Sitzung des Erstellers. Die Header X-RateLimit-Limit und X-RateLimit-Remaining zeigen den Stand; bei Überschreitung antwortet der Server mit 429 und Retry-After in Sekunden.
  • Jetzt prüfen: 5 Aufrufe je Domain und Stunde, 60 je Organisation und Stunde.
  • Sammelimport: 200 Domains je Aufruf, 3 Aufrufe je Stunde und Organisation.
  • Das Domainlimit des Tarifs gilt auch für die API. Darüber hinaus angelegte Domains antworten mit 422; Domains über dem Limit eines kleineren Tarifs sind plan_paused.

Antworten und Fehler

Erfolgreiche Antworten tragen die Nutzdaten unter data; Listen zusätzlich links und meta. Anlegen antwortet mit 201, Löschen mit 204 ohne Inhalt, Prüfungen anstoßen mit 202. Jeder Fehler kommt als application/problem+json (RFC 9457) mit type, title, status und meist detail:

  • 401: Token fehlt, ist abgelaufen oder widerrufen.
  • 402: Die Organisation ist gesperrt oder hat keinen aktiven Tarif; plan und suspended sagen, warum.
  • 403: Das Token darf das nicht (Lese-Token bei schreibender Methode, gesperrter Bereich).
  • 404: Organisation oder Objekt nicht gefunden, auch bei einer fremden Organisation.
  • 422: Eingabe ungültig; errors enthält die Meldungen je Feld.
  • 429: Limit überschritten, siehe Retry-After.
{
  "type": "https://domainwarn.com/errors/validation",
  "title": "Die Eingabe ist ungültig.",
  "status": 422,
  "detail": "Der Name muss ausgefüllt sein.",
  "errors": { "name": ["Der Name muss ausgefüllt sein."] }
}

Paginierung

Domains und Kunden sind seitenweise paginiert: page und per_page als Parameter, meta.current_page, meta.last_page und meta.total in der Antwort. Incidents, Ereignisse und Prüfergebnisse sind nach Zeit sortiert und cursor-paginiert: die Antwort nennt in meta.next_cursor (bei Prüfergebnissen links.next) den Cursor der nächsten Seite, den du als Parameter cursor mitgibst; null heißt Ende.

GET /orgs/meine-agentur/incidents?status=open&per_page=100
GET /orgs/meine-agentur/incidents?status=open&per_page=100&cursor=eyJzdGFydGVkX2F0Ijoi…

Beispiel: kritische Domains abfragen

Alle Domains mit kritischem Zustand, sortiert nach Zustand, als Grundlage für ein Ticket-System oder einen Slack-Bot:

curl -H "Authorization: Bearer $DOMAINWARN_TOKEN" -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains?status=critical,warning&sort=health_status"

Beispiel: Domain aus der CI anlegen und prüfen

Nach dem Go-live einer Kundenseite legt die Pipeline die Domain an und stößt sofort die erste Prüfung an. Die Antwort auf das Anlegen enthält die id für alle weiteren Aufrufe:

curl -X POST -H "Authorization: Bearer $DOMAINWARN_TOKEN" -H "Accept: application/json" \
  -H "Content-Type: application/json" -d '{"name":"kunde.de","customer_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains"

curl -X POST -H "Authorization: Bearer $DOMAINWARN_TOKEN" -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/check-now"

OpenAPI-Spezifikation

Die vollständige Beschreibung aller Endpunkte, Parameter, Schemata und Fehler gibt es als OpenAPI 3.1 unter /openapi.json in der Sprache dieser Seite. Damit erzeugst du Clients (openapi-generator, orval, Kiota), importierst die API in Postman, Insomnia oder Bruno oder öffnest sie im Swagger Editor. Die Spezifikation wird aus derselben Quelle wie diese Seite gebaut und ändert sich mit jedem Release der API.

Endpunkte

Alle Pfade relativ zur Basis-Adresse https://api.domainwarn.com/api/v1. Der Platzhalter {organization} ist der Slug der Organisation, wie er in der Adresse des Dashboards steht.

read: mit jedem Token; write: nur mit Schreibrecht. Pflichtfelder sind mit * markiert.

Organisation

get/organizationsreadOrganisation des Tokens

Liefert genau die Organisation, für die das Token gilt, mit Slug, Tarif und der Rolle des Tokens. Praktisch, um den Slug für alle weiteren Aufrufe zu ermitteln.

Parameter

NameOrtTypBeschreibung

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/organizations"

Übersicht

get/orgs/{organization}/dashboardreadÜbersicht

Zähler je Zustand, offene Incidents, Änderungen der letzten 24 Stunden, Auslastung des Tarifs und Verlauf der letzten 14 Tage. Die Antwort trägt einen ETag; mit If-None-Match antwortet der Server bei unverändertem Stand mit 304.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Antwort

200 · { data: Dashboard }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/dashboard"
get/orgs/{organization}/usagereadAuslastung des Tarifs

Grenzen des wirksamen Tarifs und die aktuelle Nutzung: Domains, Monitore, Mitglieder, Kanäle und Prüfungen der letzten 24 Stunden.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Antwort

200 · { data: Usage }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/usage"

Domains

get/orgs/{organization}/domainsreadDomains auflisten

Alle Domains der Organisation mit Zustand, Kunde und Anzahl offener Incidents, seitenweise. Monitore sind hier nicht enthalten, dafür den Einzelabruf nutzen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
statusquerystringZustände, kommagetrennt: healthy, warning, critical, unknown
customerquerystring (uuid)Nur Domains dieses Kunden
cmsquerystringCMS-Schlüssel, kommagetrennt; none für erreichbar ohne bekanntes System, unknown für noch nicht erkannt
searchquerystringTeil des Domainnamens
sortquerystring (name, -name, health_status, -health_status, created_at, -created_at, last_checked_at, -last_checked_at) · Standard nameSortierung, Minus für absteigend
pagequeryinteger · Standard 1Seitennummer
per_pagequeryinteger · Standard 50Einträge je Seite (1 bis 200)

Antwort

200 · { data: Domain[], links, meta }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains"
get/orgs/{organization}/domains/export.csvreadDomains als CSV

Dieselbe Liste wie beim Auflisten als CSV-Datei mit allen Zeilen statt Seiten (UTF-8 mit BOM, Content-Disposition: attachment). Spalten: domain, customer, health, cms, cms_version, registrar, domain_expires_at, certificate_target, certificate_valid_to, certificate_days_left, open_incidents, last_checked_at, paused, dashboard_url. Das Zertifikat ist das der Apex-Domain auf Port 443, sonst das des ersten aktiven Zertifikatsmonitors (certificate_target nennt es).

Limit: 30 Aufrufe je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
statusquerystringZustände, kommagetrennt: healthy, warning, critical, unknown
customerquerystring (uuid)Nur Domains dieses Kunden
cmsquerystringCMS-Schlüssel, kommagetrennt; none für erreichbar ohne bekanntes System, unknown für noch nicht erkannt
searchquerystringTeil des Domainnamens
sortquerystring (name, -name, health_status, -health_status, created_at, -created_at, last_checked_at, -last_checked_at) · Standard nameSortierung, Minus für absteigend
delimiterquerystring (comma, semicolon)Trennzeichen; ohne Angabe Semikolon bei Sprache de (Excel), sonst Komma

Antwort

200 · { data: csv } · CSV-Datei

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/export.csv"
post/orgs/{organization}/domainswriteDomain anlegen

Legt die Domain mit den Standard-Monitoren an und startet die erste Prüfung. Das Domainlimit des Tarifs gilt; darüber antwortet der Server mit 422.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
name*stringDomain, Unicode oder Punycode; Subdomains und Schemata werden entfernt
customer_idstring | null (uuid)Kunde, dem die Domain zugeordnet wird
run_checksbooleanErste Prüfung sofort starten

Antwort

201 · { data: Domain }

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"kunde.de","customer_id":null}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains"
get/orgs/{organization}/domains/cmsreadErkannte Systeme

Welche CMS und Shopsysteme auf den Domains erkannt wurden, mit Anzahl; meta.none zählt erreichbare Domains ohne bekanntes System, meta.unknown noch nicht erkannte. Werte für den Filter cms der Domainliste.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/cms"
post/orgs/{organization}/domains/bulkwriteDomains gesammelt anlegen

Bis zu 200 Domains je Aufruf, als Liste oder als Text mit einer Domain je Zeile (Trennzeichen auch Komma, Semikolon, Leerzeichen; Zeilen mit # werden übersprungen). Ungültige oder doppelte Domains landen in meta.errors, die übrigen werden angelegt.

Limit: 3 Aufrufe je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
domainsarrayListe von Domains (alternativ zu text)
textstringDomains als Text (alternativ zu domains)
customer_idstring | null (uuid)Kunde für alle angelegten Domains

Antwort

201 · Angelegte Domains und Fehler je Eingabe

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"text":"kunde-a.de\nkunde-b.de\nshop.kunde-c.com","customer_id":null}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/bulk"
post/orgs/{organization}/domains/import/zone-filewriteZonendatei auswerten

Liest eine BIND-Zonendatei und liefert die Website-Hostnamen (A, AAAA, CNAME) als Vorschau, je Eintrag mit dem Hinweis, ob er schon überwacht wird. Höchstens 200 je Aufruf, weitere Seiten über offset = next_offset. Legt nichts an: die bestätigte Auswahl geht an den Import.

Limit: 60 Aufrufe je Minute und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
text*stringInhalt der Zonendatei
originstring | nullZone für Dateien ohne $ORIGIN (z. B. kunde.de); fehlt sie bei relativen Namen, antwortet der Server mit 422
offsetinteger | nullErster Eintrag der Seite (aus next_offset)

Antwort

200

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"text":"$ORIGIN kunde.de.\n@ IN A 203.0.113.10\nwww IN CNAME kunde.de.\nshop IN A 203.0.113.11"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/import/zone-file"
post/orgs/{organization}/domains/import/commitwriteImport bestätigen

Legt die bestätigte Liste aus einer Zonendatei im Hintergrund an, bis zu 5000 Domains je Import. Die Antwort (202) ist der Import mit seiner ID; den Fortschritt liefert GET /domains/import/{import}, bis status done oder failed ist. Anders als beim gesammelten Anlegen starten die Monitore zu ihrem regulären Zeitpunkt statt sofort. Ist das Domainlimit des Tarifs erreicht, gelten die restlichen Namen mit demselben Grund als abgelehnt.

Limit: 10 Imports je Stunde und Organisation

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
domains*arrayBestätigte Domains oder Hostnamen
customer_idstring | null (uuid)Kunde für alle angelegten Domains

Antwort

202 · { data: DomainImport } · Der angelegte Import (status queued)

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"domains":["kunde.de","shop.kunde.de"],"customer_id":null}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/import/commit"
get/orgs/{organization}/domains/import/{import}readImport-Fortschritt abrufen

Stand eines Imports: Zähler je Block, nach dem Ende die Liste der abgelehnten oder übersprungenen Namen mit Grund. Alle paar Sekunden abfragen, bis status done oder failed ist. Innenansicht der Agentur: Kundenzugänge sehen Imports nicht.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
importpathstring (uuid)ID des Imports aus der Antwort auf das Bestätigen

Antwort

200 · { data: DomainImport }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/import/<import-id>"
get/orgs/{organization}/domains/{domain}readDomain abrufen

Eine Domain mit allen Monitoren, deren letzten Befunden und der Anzahl offener Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200 · { data: Domain }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>"
patch/orgs/{organization}/domains/{domain}writeDomain ändern

Kunde zuordnen, Überwachung ein- oder ausschalten oder Benachrichtigungsregeln nur für diese Domain setzen. Nur mitgesendete Felder ändern sich.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
customer_idstring | null (uuid)Kunde oder null zum Lösen
is_activebooleanfalse pausiert die Überwachung dauerhaft, true nimmt sie wieder auf
notification_overridesobject | nullAbweichende Benachrichtigungsregeln

Antwort

200 · { data: Domain }

Beispiel

curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"customer_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77","notification_overrides":{"min_severity":"critical"}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>"
delete/orgs/{organization}/domains/{domain}writeDomain löschen

Entfernt die Domain mit Monitoren, Ergebnissen, Incidents und Ereignissen endgültig.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

204

Beispiel

curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>"
post/orgs/{organization}/domains/{domain}/pausewriteDomain pausieren

Setzt die Überwachung bis zu einem Zeitpunkt aus, etwa während eines Umzugs. Ohne until wird die Pause aufgehoben. Offene Incidents bleiben bestehen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
untilstring | null (date-time)Ende der Pause, in der Zukunft; null hebt die Pause auf

Antwort

200 · { data: Domain }

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"until":"2026-10-01T06:00:00Z"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/pause"
patch/orgs/{organization}/domains/{domain}/monitoringwriteÜberwachungsbereiche schalten

Schaltet die Bereiche Website (web: http, tls, ct_log, redirects, ipv6), Mail (mail: mx, spf, dkim, dmarc, mta_sts, tls_rpt, bimi, reverse_dns, smtp, dane) und DNS (dns: dns, dnssec, domain, blacklist, caa, nameservers) ein oder aus. Ausgeschaltete Bereiche schließen ihre offenen Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
groups*objectBereiche mit gewünschtem Zustand; nicht genannte bleiben unverändert

Antwort

200 · { data: Domain }

Beispiel

curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"groups":{"mail":false}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/monitoring"
post/orgs/{organization}/domains/{domain}/detect-cmswriteSystem neu erkennen

Reiht die Erkennung von CMS und Shopsystem für die Domain ein; das Ergebnis erscheint in cms der Domain.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

202 · Erkennung eingereiht

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/detect-cms"
post/orgs/{organization}/domains/{domain}/check-nowwriteJetzt prüfen

Stellt alle aktiven Monitore der Domain sofort in die Warteschlange, z. B. nach einem Deploy oder einer DNS-Änderung. Ergebnisse erscheinen wenige Sekunden später in den Monitoren.

Limit: 5 je Domain und Stunde, 60 je Organisation und Stunde

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

202 · Prüfungen eingereiht

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/check-now"

Monitore

get/orgs/{organization}/domains/{domain}/suggestionsreadHostnamen-Vorschläge

Hostnamen unter der Domain, die in Certificate-Transparency-Logs auftauchen, aber noch nicht überwacht werden. Standardmäßig nur offene; mit all=1 auch angenommene und verworfene, seitenweise zu 200.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
allqueryboolean · Standard falseAuch entschiedene Vorschläge
pagequeryinteger · Standard 1Seitennummer

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/suggestions"
post/orgs/{organization}/suggestions/{suggestion}/acceptwriteVorschlag annehmen

Legt einen Website-Monitor auf den Hostnamen an und markiert den Vorschlag als angenommen. 422, wenn der Hostname nicht zur Domain gehört oder das Limit an Hostnamen je Domain erreicht ist.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
suggestionpathstring (uuid)ID des Hostnamen-Vorschlags

Antwort

200 · Angenommen

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/suggestions/<suggestion-id>/accept"
post/orgs/{organization}/suggestions/{suggestion}/dismisswriteVorschlag verwerfen

Markiert den Vorschlag als verworfen; der Hostname wird nicht erneut vorgeschlagen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
suggestionpathstring (uuid)ID des Hostnamen-Vorschlags

Antwort

200 · { data: HostnameSuggestion } · Verworfen

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/suggestions/<suggestion-id>/dismiss"
get/orgs/{organization}/domains/{domain}/monitorsreadMonitore einer Domain

Alle Monitore der Domain mit Zustand, letzten Befunden und Rohdaten, sortiert nach Prüfart und Ziel.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/monitors"
post/orgs/{organization}/domains/{domain}/monitorswriteMonitor anlegen

Zusätzlicher Monitor, etwa eine weitere URL oder ein Mailserver-Zertifikat. Ziele müssen zur Domain gehören; nur bei tls ist jeder öffentliche Hostname erlaubt. Das Intervall wird auf das Minimum des Tarifs begrenzt.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Anfrage (JSON)

FeldTypBeschreibung
type*string (http, tls, dns, mx, spf, dmarc, domain, dkim, dnssec, mta_sts, blacklist, tls_rpt, bimi, smtp, reverse_dns, ct_log, redirects, caa, nameservers, ipv6, dane)Prüfart
target*stringURL (http) oder Hostname; ohne Schema wird https:// ergänzt
interval_secondsintegerPrüfintervall in Sekunden
configobjectNur bei tls: Port und STARTTLS-Protokoll

Antwort

201 · { data: Monitor }

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"type":"tls","target":"mail.kunde.de","config":{"port":587,"starttls":"smtp"}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/monitors"
patch/orgs/{organization}/monitors/{monitor}writeMonitor ändern

Intervall, Aktivierung und Konfiguration je Prüfart: expected_status und slow_ms (http), selectors (dkim). Ein deaktivierter Monitor schließt seine offenen Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
monitorpathstring (uuid)ID des Monitors

Anfrage (JSON)

FeldTypBeschreibung
interval_secondsintegerPrüfintervall in Sekunden
is_enabledbooleanAktiv
configobjectErwartete HTTP-Status, Schwelle für „langsam“ in ms (http) oder DKIM-Selektoren (dkim)

Antwort

200 · { data: Monitor }

Beispiel

curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"config":{"expected_status":[200,301],"slow_ms":2000}}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/monitors/<monitor-id>"
delete/orgs/{organization}/monitors/{monitor}writeMonitor löschen

Entfernt den Monitor und schließt seine offenen Incidents.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
monitorpathstring (uuid)ID des Monitors

Antwort

204

Beispiel

curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/monitors/<monitor-id>"
get/orgs/{organization}/maintenance-windowsreadWartungsfenster auflisten

Alle Wartungsfenster der Organisation, aktive zuerst; mit domain nur die, die diese Domain betreffen (eigene, die ihres Kunden und die der ganzen Organisation).

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainquerystring (uuid)Nur Fenster, die diese Domain betreffen

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/maintenance-windows"
post/orgs/{organization}/maintenance-windowswriteWartungsfenster anlegen

Einmalig (starts_at, ends_at) oder wöchentlich (weekdays, time_from, time_to in timezone). Mit domain_id gilt es für eine Domain, mit customer_id für alle Domains des Kunden, ohne beides für die ganze Organisation. Während des Fensters entstehen keine Incidents und Meldungen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
name*stringBezeichnung
kind*string (once, weekly)Einmalig oder wöchentlich
customer_idstring | null (uuid)Kunde, dessen Domains betroffen sind
domain_idstring | null (uuid)Einzelne Domain (setzt customer_id zurück)
starts_atstring | null (date-time)Beginn, einmalig (Pflicht bei once)
ends_atstring | null (date-time)Ende, einmalig, nach dem Beginn (Pflicht bei once)
weekdaysarray | nullWochentage 1 (Montag) bis 7 (Sonntag) (Pflicht bei weekly)
time_fromstring | nullBeginn HH:MM (Pflicht bei weekly)
time_tostring | nullEnde HH:MM, ungleich Beginn; vor dem Beginn reicht das Fenster über Mitternacht (Pflicht bei weekly)
timezonestringZeitzone für Wochentage und Uhrzeiten
is_enabledbooleanAktiv

Antwort

201 · { data: MaintenanceWindow }

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"Nächtliches Deploy","kind":"weekly","customer_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77","weekdays":[2,4],"time_from":"02:00","time_to":"03:00","timezone":"Europe/Berlin"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/maintenance-windows"
patch/orgs/{organization}/maintenance-windows/{window}writeWartungsfenster ändern

Dieselben Felder wie beim Anlegen, alle optional; nur mitgesendete Felder ändern sich. Die Regeln je Art gelten für den Stand nach der Änderung.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
windowpathstring (uuid)ID des Wartungsfensters

Anfrage (JSON)

FeldTypBeschreibung
namestringBezeichnung
kindstring (once, weekly)Einmalig oder wöchentlich
customer_idstring | null (uuid)Kunde oder null
domain_idstring | null (uuid)Domain oder null
starts_atstring | null (date-time)Beginn, einmalig
ends_atstring | null (date-time)Ende, einmalig
weekdaysarray | nullWochentage 1 bis 7
time_fromstring | nullBeginn HH:MM
time_tostring | nullEnde HH:MM
timezonestringZeitzone
is_enabledbooleanAktiv

Antwort

200 · { data: MaintenanceWindow }

Beispiel

curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"is_enabled":false}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/maintenance-windows/<window-id>"
delete/orgs/{organization}/maintenance-windows/{window}writeWartungsfenster löschen

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
windowpathstring (uuid)ID des Wartungsfensters

Antwort

204

Beispiel

curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/maintenance-windows/<window-id>"
get/orgs/{organization}/monitors/{monitor}/resultsreadPrüfergebnisse

Einzelne Prüfungen eines Monitors, neueste zuerst, cursor-paginiert. Der Cursor der nächsten Seite steht in links.next.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
monitorpathstring (uuid)ID des Monitors
fromquerystring (date-time)Nur Prüfungen ab diesem Zeitpunkt
toquerystring (date-time)Nur Prüfungen bis zu diesem Zeitpunkt
per_pagequeryinteger · Standard 100Einträge je Seite (1 bis 500)
cursorquerystringCursor der nächsten Seite aus meta.next_cursor der vorigen Antwort

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/monitors/<monitor-id>/results"
get/orgs/{organization}/monitors/{monitor}/uptimereadVerfügbarkeit und Antwortzeit

Verfügbarkeit, Antwortzeiten (Median, 95. Perzentil) und Ausfallzeit je Zeitraum, dazu Messpunkte für Diagramme.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
monitorpathstring (uuid)ID des Monitors
rangequerystring (24h, 7d, 30d, 90d) · Standard 24hZeitraum

Antwort

200 · { data: Uptime }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/monitors/<monitor-id>/uptime"

DNS

get/orgs/{organization}/domains/{domain}/fixesreadFehlende Records

Vorschläge für fehlende DNS-Records (DMARC, SPF, TLS-RPT, CAA) aus den aktuellen Befunden der Domain, mit den verbundenen Cloudflare-Integrationen und ob die Zone bei Cloudflare liegt.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/fixes"
post/orgs/{organization}/domains/{domain}/fixes/{fix}/applywriteRecord bei Cloudflare anlegen

Legt den vorgeschlagenen Record über die angegebene Cloudflare-Integration an. Nur additiv: bestehende Records werden nie geändert; ist bereits ein passender Record vorhanden oder liegt die Zone nicht (mehr) bei Cloudflare, antwortet der Server mit 422. Der Monitor wird anschließend neu geprüft.

Limit: 20 je Minute

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
fixpathstringSchlüssel des Vorschlags aus der Liste der fehlenden Records

Anfrage (JSON)

FeldTypBeschreibung
integration_id*string (uuid)Cloudflare-Integration der Organisation
ruastringBerichtsadresse für dmarc_missing und tls_rpt_missing (Pflicht bei diesen Vorschlägen)
sendersstringWeitere SPF-Mechanismen für spf_missing, durch Komma getrennt (include:…, ip4:…, ip6:…, a, mx); leer bestätigt, dass keine weiteren Dienste senden

Antwort

200 · Record angelegt

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"integration_id":"3f9c1a52-6a2e-4c0e-9d4b-1c9a1a0e5b77","rua":"dmarc-reports@agentur.de"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/fixes/<fix-id>/apply"
get/orgs/{organization}/domains/{domain}/dnsreadAktuelle DNS-Records

Der jüngste DNS-Schnappschuss der Domain mit allen Records je Typ; null, solange noch keiner vorliegt.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/dns"
get/orgs/{organization}/domains/{domain}/dns/snapshotsreadDNS-Verlauf

Alle Schnappschüsse der Domain, neueste zuerst, ohne Records (dafür den Vergleich nutzen). Jeder Schnappschuss steht für einen Zeitraum mit unveränderter Konfiguration.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
limitqueryinteger · Standard 50Höchstzahl

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/dns/snapshots"
get/orgs/{organization}/domains/{domain}/dns/diffreadZwei DNS-Stände vergleichen

Beide Schnappschüsse mit Records und die Unterschiede dazwischen (hinzugefügte, entfernte und geänderte Records je Typ).

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
from*querystring (uuid)ID des älteren Schnappschusses
to*querystring (uuid)ID des neueren Schnappschusses

Antwort

200

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/dns/diff?from=<from>&to=<to>"

Incidents

get/orgs/{organization}/incidentsreadIncidents auflisten

Standardmäßig nur offene und quittierte Incidents, offene und kritische zuerst; cursor-paginiert.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
statusquerystring · Standard openopen (offen und quittiert), all oder Status kommagetrennt: open, acknowledged, resolved
severityquerystringSchweregrade, kommagetrennt: info, warning, critical
domainquerystring (uuid)Nur Incidents dieser Domain
customerquerystring (uuid)Nur Domains dieses Kunden
per_pagequeryinteger · Standard 50Einträge je Seite (1 bis 200)
cursorquerystringCursor der nächsten Seite aus meta.next_cursor der vorigen Antwort

Antwort

200 · { data: Incident[], links, meta }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/incidents"
get/orgs/{organization}/incidents/{incident}readIncident abrufen

Ein Incident mit Domain, Monitor, Ursache und dem Namen des Quittierenden.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
incidentpathstring (uuid)ID des Incidents

Antwort

200 · { data: Incident }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/incidents/<incident-id>"
post/orgs/{organization}/incidents/{incident}/acknowledgewriteIncident quittieren

Markiert den Incident als gesehen; Erinnerungen hören auf, die Entwarnung kommt weiterhin.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
incidentpathstring (uuid)ID des Incidents

Antwort

200 · { data: Incident }

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/incidents/<incident-id>/acknowledge"

Ereignisse

get/orgs/{organization}/eventsreadEreignisse auflisten

Erkannte Änderungen und Incident-Übergänge aller Domains, neueste zuerst, cursor-paginiert. Geeignet für eigene Auswertungen oder ein Änderungsprotokoll.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
severityquerystringSchweregrade, kommagetrennt: info, warning, critical
typequerystringEreignisarten, kommagetrennt
domainquerystring (uuid)Nur Ereignisse dieser Domain
customerquerystring (uuid)Nur Domains dieses Kunden
fromquerystring (date-time)Nur Ereignisse ab diesem Zeitpunkt
toquerystring (date-time)Nur Ereignisse bis zu diesem Zeitpunkt
per_pagequeryinteger · Standard 50Einträge je Seite (1 bis 200)
cursorquerystringCursor der nächsten Seite aus meta.next_cursor der vorigen Antwort

Antwort

200 · { data: Event[], links, meta }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/events"
get/orgs/{organization}/domains/{domain}/timelinereadZeitleiste einer Domain

Ereignisse einer Domain, neueste zuerst; dieselben Filter wie bei allen Ereignissen.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
domainpathstring (uuid)ID der Domain
severityquerystringSchweregrade, kommagetrennt: info, warning, critical
typequerystringEreignisarten, kommagetrennt
fromquerystring (date-time)Ab Zeitpunkt
toquerystring (date-time)Bis Zeitpunkt
per_pagequeryinteger · Standard 100Einträge je Seite (1 bis 200)
cursorquerystringCursor der nächsten Seite aus meta.next_cursor der vorigen Antwort

Antwort

200 · { data: Event[], links, meta }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/domains/<domain-id>/timeline"

Kunden

get/orgs/{organization}/customersreadKunden auflisten

Kunden der Organisation mit Anzahl der Domains, alphabetisch; archivierte nur auf Wunsch.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
searchquerystringTeil von Name oder Referenz
archivedquerybooleantrue liefert nur archivierte, false nur aktive (Standard)
pagequeryinteger · Standard 1Seitennummer
per_pagequeryinteger · Standard 100Einträge je Seite (1 bis 200)

Antwort

200 · { data: Customer[], links, meta }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers"
post/orgs/{organization}/customerswriteKunden anlegen

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.

Anfrage (JSON)

FeldTypBeschreibung
name*stringName, eindeutig je Organisation
referencestring | nullEigene Referenz
notesstring | nullNotizen
contact_emailstring | null (email)Kontaktadresse für Berichte
monthly_reportbooleanMonatlichen Bericht senden
report_localestring | null (de, en)Sprache des Berichts

Antwort

201 · { data: Customer }

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"Musterfirma GmbH","reference":"K-1042","contact_email":"it@musterfirma.de","monthly_report":true,"report_locale":"de"}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers"
get/orgs/{organization}/customers/{customer}readKunden abrufen

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

200 · { data: Customer }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>"
get/orgs/{organization}/customers/{customer}/reportreadMonatsbericht abrufen

Der Monatsbericht des Kunden als Daten: Zusammenfassung, je Domain Verfügbarkeit, Ausfallzeit, Incidents und Zertifikat, dazu Incidents, Änderungen und anstehende Abläufe. Ohne month der Vormonat, Sprache über locale.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden
monthquerystringBerichtsmonat als YYYY-MM; Standard ist der Vormonat
localequerystring (de, en)Sprache des Berichts (Texte, Datumsformate); ohne Angabe die Berichtssprache des Kunden, sonst die der Organisation. Accept-Language gilt hier nicht.

Antwort

200 · { data: CustomerReport }

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/report"
get/orgs/{organization}/customers/{customer}/report/pdfreadMonatsbericht als PDF

Derselbe Bericht als PDF; download=1 liefert ihn als Anhang statt inline.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden
monthquerystringBerichtsmonat als YYYY-MM; Standard ist der Vormonat
localequerystring (de, en)Sprache des Berichts (Texte, Datumsformate); ohne Angabe die Berichtssprache des Kunden, sonst die der Organisation. Accept-Language gilt hier nicht.
downloadqueryboolean · Standard falseAls Download (Content-Disposition attachment)

Antwort

200 · { data: pdf } · PDF-Datei

Beispiel

curl \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/report/pdf"
post/orgs/{organization}/customers/{customer}/report/sharewriteBericht freigeben

Erzeugt einen signierten Link auf das PDF, 60 Tage gültig, ohne Login abrufbar – zum Weitergeben an den Kunden.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden
monthquerystringBerichtsmonat als YYYY-MM; Standard ist der Vormonat
localequerystring (de, en)Sprache des Berichts (Texte, Datumsformate); ohne Angabe die Berichtssprache des Kunden, sonst die der Organisation. Accept-Language gilt hier nicht.

Antwort

200

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/report/share"
patch/orgs/{organization}/customers/{customer}writeKunden ändern

Dieselben Felder wie beim Anlegen, dazu is_archived. name muss immer mitgesendet werden.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Anfrage (JSON)

FeldTypBeschreibung
name*stringName
referencestring | nullEigene Referenz
notesstring | nullNotizen
contact_emailstring | null (email)Kontaktadresse
is_archivedbooleanArchivieren oder wiederherstellen
monthly_reportbooleanMonatlichen Bericht senden
report_localestring | null (de, en)Sprache des Berichts

Antwort

200 · { data: Customer }

Beispiel

curl -X PATCH \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"Musterfirma GmbH","is_archived":true}' \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>"
delete/orgs/{organization}/customers/{customer}writeKunden löschen

Entfernt den Kunden; seine Domains bleiben erhalten und verlieren nur die Zuordnung.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

204

Beispiel

curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>"
post/orgs/{organization}/customers/{customer}/status-pagewriteStatus-Seite einschalten

Erzeugt das Token der öffentlichen Status-Seite des Kunden (ohne Login erreichbar); ein bestehendes wird ersetzt, die alte Adresse gilt dann nicht mehr. Die Adresse steht in status_page_url. Für archivierte Kunden antwortet der Server mit 422.

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

200 · { data: Customer } · Eingeschaltet, Adresse in `status_page_url`

Beispiel

curl -X POST \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/status-page"
delete/orgs/{organization}/customers/{customer}/status-pagewriteStatus-Seite abschalten

Löscht das Token; die Adresse antwortet danach mit 404. Liefert den Kunden zurück (status_page_url ist null).

Parameter

NameOrtTypBeschreibung
organizationpathstringSlug der Organisation, steht in der Adresse des Dashboards und unter Einstellungen → API. Ein Token erreicht nur seine eigene Organisation, andere antworten mit 404.
customerpathstring (uuid)ID des Kunden

Antwort

200 · { data: Customer } · Abgeschaltet

Beispiel

curl -X DELETE \
  -H "Authorization: Bearer $DOMAINWARN_TOKEN" \
  -H "Accept: application/json" \
  "https://api.domainwarn.com/api/v1/orgs/meine-agentur/customers/<customer-id>/status-page"

Häufige Fragen

Gibt es Webhooks?
Nicht als Teil der API, aber als Benachrichtigungskanal: Unter Benachrichtigungen im Dashboard richtest du einen Webhook ein, der jeden Incident und jede Änderung als JSON an deine Adresse sendet; daneben gibt es E-Mail, Slack, Microsoft Teams, Discord, Telegram, Mattermost, PagerDuty, Opsgenie, ntfy, SMS und einen Atom-Feed. Kanäle lassen sich nur mit einer Sitzung verwalten, nicht per Token.
Kann ich mit einem Token mehrere Organisationen abfragen?
Nein, ein Token gehört zu genau einer Organisation. Für mehrere Organisationen erzeugst du je Organisation ein Token.
Ist die API im Free-Tarif enthalten?
Ja, die API steht in jedem Tarif zur Verfügung, mit denselben Domainlimits wie das Dashboard.
Wie erfahre ich von Änderungen an der API?
Neue Felder und Endpunkte kommen ohne Versionswechsel dazu; bestehende Felder werden nicht entfernt oder umgedeutet. Sollte ein Bruch nötig werden, bekommt er ein neues Präfix (/api/v2), und v1 bleibt für eine Übergangszeit parallel erreichbar. Die OpenAPI-Spezifikation trägt die aktuelle Version im Feld `info.version`.
Wo sehe ich, wann ein Token zuletzt benutzt wurde?
Im Dashboard unter Einstellungen → API steht je Token die letzte Nutzung. Unbenutzte Tokens solltest du widerrufen.

Bereit für die erste Anfrage?

Registrieren, Domains anlegen, unter Einstellungen → API ein Token erzeugen und in wenigen Minuten die erste Abfrage aus deinem Skript schicken. Die API ist in jedem Tarif enthalten.