Zum Inhalt

Domains & DNS

Domain-Verwaltung

Domains auflisten

GET /api/v1/domains?skip=0&limit=50&customer_id=1

Domain erstellen (mit Auto-Detect)

POST /api/v1/domains
{
  "name": "example.com",
  "customer_id": 1,
  "dns_provider_id": null  // Optional — wird auto-detected
}

Bei der Erstellung wird automatisch der DNS-Provider via NS-Records erkannt. Wenn ein passender Provider beim Kunden hinterlegt ist, wird er automatisch zugewiesen.

DNS-Status Lifecycle

Domain erstellt
    ├── Provider zugewiesen → "managed"
    ├── Provider erkannt, keine Credentials → "credentials_missing"
    └── Kein Provider erkannt → "manual"
    Background-Worker prueft alle 5 Min
    A-Record zeigt auf xynap IP → "verified" + status="active"
Status Bedeutung
manual Kein Provider, manuelles DNS-Setup noetig
managed Provider zugewiesen, DNS wird automatisch verwaltet
credentials_missing Provider erkannt, aber keine API-Credentials
pending_verification DNS wird geprueft
verified DNS korrekt, Domain aktiv
error DNS-Fehler

DNS-Instructions abrufen

GET /api/v1/domains/{id}/dns-instructions

Zeigt welche DNS-Records gesetzt werden muessen und prueft live den Status:

{
  "domain": "example.com",
  "dns_status": "manual",
  "detected_provider": "hetzner",
  "required_records": [
    {"type": "A", "name": "@", "content": "46.4.96.105", "status": "ok"},
    {"type": "AAAA", "name": "@", "content": "2a01:4f8:140:829d::2", "status": "unknown"},
    {"type": "A", "name": "www", "content": "46.4.96.105", "status": "missing"}
  ],
  "verification_status": "1 von 3 Records korrekt"
}

DNS verifizieren

POST /api/v1/domains/{id}/verify

Prueft den A-Record und setzt dns_status auf verified wenn korrekt.

DNS-Records

# Records einer Domain
GET /api/v1/domains/{id}/records

# Record erstellen
POST /api/v1/domains/{id}/records
{"type": "A", "name": "sub", "content": "1.2.3.4", "ttl": 3600}

# Record aktualisieren
PUT /api/v1/domains/{id}/records/{record_id}
{"content": "5.6.7.8"}

# Record loeschen (nur nicht-managed)
DELETE /api/v1/domains/{id}/records/{record_id}

DNS-Provider

Provider-Typen

Typ API-Adapter Credentials
hetzner Ja api_token
ionos Ja prefix, secret
cloudflare Erkennung -
inwx Erkennung -
manual Nein -

Provider CRUD

# Provider auflisten
GET /api/v1/dns-providers?customer_id=1

# Provider erstellen
POST /api/v1/dns-providers
{
  "customer_id": 1,
  "name": "Hetzner Hauptaccount",
  "type": "hetzner",
  "credentials": {"api_token": "xxx"},
  "is_default": true
}

# Verbindung testen
POST /api/v1/dns-providers/{id}/test

# Zonen abrufen
GET /api/v1/dns-providers/{id}/zones

Auto-Detect

Die Platform erkennt 10 DNS-Provider anhand der Nameserver:

Hetzner, IONOS, Cloudflare, INWX, Strato, Netcup, GoDaddy, Namecheap, OVH, Gandi

Bei Erkennung eines unterstuetzten Providers (Hetzner/IONOS) und vorhandenen Credentials wird die Domain automatisch als managed markiert.