Hosting-Anbieter – Kunden, Dienste und Abrechnung
Die Hosting-API unterstützt Anbieter beim Betrieb verwalteter S3-Dienste mit Kunden- und Resellerzugriff, versionierten Tarifen, Dienstaktionen und monatlichen Nutzungsabrechnungen. Diese Anleitung beschreibt die Ausgabe vom 23. Oktober 2026. Prüfen Sie vor der Kundenaufnahme, ob Ihre installierte eEKAS-Version die Funktionen unterstützt und Hosting, Nutzungserfassung und Überwachung aktiviert sind. Die API-Nutzung erfolgt in eigener Verantwortung und ist nicht durch den Support abgedeckt.
Den passenden Ablauf wählen
/api/v1/object-storage/ dient der administrativen Verwaltung von S3-Benutzern, Buckets und bestehenden Kundenabrechnungsberichten. /api/v1/hosting/ ergänzt tarifbasierte Abonnements und auf Kunden beziehungsweise Reseller begrenzte Automatisierung. Hosting erzeugt eigene Benutzer und Buckets je Dienst; vorhandene S3-Benutzer, Buckets und Abrechnungsregistrierungen werden nicht automatisch übernommen. Der S3 Browser bietet Objektzugriff und Branding. Ein Abonnement- oder Abrechnungsportal erfordert eine separate Integration.
Konten und Berechtigungen
Senden Sie X-API-Key über die konfigurierte HTTPS-API, normalerweise an Port 18443. GUI-Anmeldung, Verwaltungs-API-Zugang, Hosting-Kundendatensatz und S3-Schlüssel haben unterschiedliche Aufgaben. Das Anlegen eines Kontos stellt nicht automatisch einen API-Token aus und gewährt keine Administratorrechte.
| Identität | Verwendung |
|---|---|
| Anbieterpersonal: admin oder s3-admin | Standorte, Tarife, Reseller und Dienste verwalten; anbieterweiten Status, Überwachung und Sicherungsmetadaten lesen. |
| Hosting-Reseller | Kunden anlegen und deren Dienste innerhalb zugewiesener Tarife und Kapazitätsgrenzen verwalten. |
| Hosting-Kunde | Eigene Dienste, Nutzung, Vorgänge, Abrechnungen und Ereignisse lesen; Zugangsdaten aktiver Dienste abrufen und eigene Tokens/Webhooks verwalten. |
Kunden- und Resellertokens können keine globalen Verwaltungsendpunkte oder globalen Jobs nutzen. Anbieterweite Status-, Überwachungs- und Sicherungsabfragen sind auch für read-only-Schlüssel gesperrt. GET /api/v1/hosting/me zeigt die authentifizierte Identität.
POST /tokens erhält genau eine customer_id oder reseller_id, ein label und optional expires_days (1–366, Standard 90). Bewahren Sie den einmalig angezeigten Token geschützt auf. Pro Identität sind höchstens 20 aktive Tokens zulässig. Widerrufen Sie ungenutzte Tokens mit DELETE /tokens und token_id im JSON-Körper.
Tarife und Kunden vorbereiten
Die folgenden Pfade gelten relativ zu /api/v1/hosting. Änderungen verwenden JSON-Objekte und Content-Type: application/json. Listen unterstützen limit (1–200) und cursor.
- Registrieren Sie einen vorhandenen S3-Standort mit
POST /locations:id,name,siteundcapacity_gib. Dadurch wird kein neuer S3-Standort angelegt. Die Standortzuordnung kann später nicht geändert werden. - Veröffentlichen Sie einen Tarif mit
POST /plans:id,name,quota_gib, erlaubtelocationsundcurrency. Ergänzen Sie bei Bedarf Objektgrenzen, Aufbewahrung, Versionierung/WORM, Ratenlimits und Preise. Dieselbe Tarif-ID erzeugt bei erneuter Veröffentlichung eine neue unveränderliche Version. - Legen Sie optional einen Reseller mit
id,name,quota_gibundallowed_plansan. Ein Kunde benötigtid,nameund optionalemail,external_idsowiereseller_id. - Prüfen Sie Speichererfassung und S3-Traffic-Erfassung vor Beginn des Abrechnungszeitraums. Eine spätere Aktivierung rekonstruiert keine fehlenden Messwerte.
Standort- und Resellergrenzen reservieren logische GiB-Kontingente. Fehlgeschlagene und gekündigte Dienste reservieren ihre Quota bis zur endgültigen Entfernung weiter. Dies garantiert keine physische Ceph-Kapazität. Ratenlimits gelten je Minute und RGW-Daemon; sie sind keine feste clusterweite Bandbreitenbegrenzung.
Dienst bereitstellen und übergeben
Senden Sie POST /services mit einem eindeutigen Idempotency-Key (8–200 zulässige Zeichen), beispielsweise mit:
{"customer_id":"customer01","plan_id":"standard","plan_version":1,"external_id":"subscription-123","location_id":"eu-central"}
Wiederholen Sie nach einem Verbindungsfehler dieselbe Anfrage mit demselben Schlüssel. Widersprüchliche Tarif- oder Standortangaben liefern 409. HTTP 202 bedeutet angenommen: Fragen Sie die zurückgegebene status_url ab, bis state=complete oder state=failed erreicht ist. Hosting-Vorgänge verwenden /hosting/operations und nicht den globalen Jobs-Endpunkt. Übergeben Sie den Dienst erst nach bestätigtem Abschluss.
POST /credentials mit service_id ruft ausdrücklich die S3-Zugangsdaten eines aktiven eigenen Dienstes ab. Übermitteln Sie diese geschützt und verwenden Sie für Objekte den separaten S3-Endpunkt. rotate=true ergänzt einen zweiten Schlüssel; der alte bleibt aktiv. Höchstens zwei Schlüssel sind zulässig. Ein Anbieteradministrator widerruft ungenutzte Schlüssel über die S3-Verwaltung. Prüfen Sie Bucketzugriff und Quotas vor der Übergabe.
Dienstlebenszyklus verwalten
POST /services/actions benötigt service_id, action und Idempotency-Key; expected_revision schützt optional vor gleichzeitigen Änderungen. Pro Dienst ist nur ein wartender oder laufender Vorgang zulässig.
| Aktion | Ergebnis |
|---|---|
| suspend / resume | S3-Zugriff sperren beziehungsweise freigeben. Bei Sperrung laufen Grund- und Speichergebühren weiter. |
| change-plan | plan_id und optional plan_version angeben. Die Quota muss vorhandene Daten aufnehmen können; der aktuelle Standort muss erlaubt bleiben. Währung und Schutzvorgaben bleiben gewahrt. Technische Grenzen ändern sich nach Prüfung, der neue Abrechnungstarif ab dem nächsten UTC-Kalendermonat. |
| cancel | Zugriff sperren und künftige abrechenbare Laufzeit beenden. Daten und reservierte Quota bleiben während der tariflichen Aufbewahrungsfrist erhalten. |
| purge | Nach Ablauf der Kündigungsaufbewahrung mit confirm="purge:<service_id>" bestätigen. Nur leere eigene Buckets und Benutzer werden entfernt. Geschützte oder nicht leere Inhalte werden nicht zwangsweise gelöscht. Die Kapazität wird erst nach geprüfter Entfernung freigegeben. |
| retry | Nach Prüfung eines Fehlers ausdrücklich mit neuem Idempotenzschlüssel wiederholen. Ein fehlgeschlagener Vorgang kann den Speicher bereits teilweise verändert haben. |
Nutzung und Monatsabrechnungen
GET /usage?service_id=... liefert erfassten Speicher, Objektanzahl, Quota, Erfassungszeit und Traffic-Abdeckung. Fehlende Werte bedeuten unbekannt und nicht null Verbrauch. management_check_ms misst die Verwaltungsabfrage, nicht die S3-Latenz eines Kunden.
Tarife akzeptieren nichtnegative Dezimalzeichenfolgen: monthly_base, included_storage_gib, storage_price_per_gib, included_upload_gib, upload_price_per_gib, included_download_gib und download_price_per_gib. Nicht gesetzte Geldwerte sind null. Ein GiB entspricht 1.073.741.824 Bytes.
- Rufen Sie nach Monatsende
GET /billing/preview?customer_id=customer01&period=2026-09auf. Zulässig sind abgeschlossene UTC-Kalendermonate. - Prüfen Sie Positionen, gültige Tarife, Speicher-/Traffic-Abdeckung und Währungen. Die Grundgebühr wird nach abrechenbaren aktiven Sekunden anteilig berechnet. Speichermehrverbrauch verwendet den erfassten Monatspeak oberhalb des Inklusivkontingents; Traffic verwendet gemessene Zähler. Inklusivkontingente und Speichermehrverbrauch werden nicht zeitanteilig berechnet. Sperrung bleibt abrechenbar; Kündigung beendet die abrechenbare Laufzeit.
- Schließen Sie mit
POST /billing/statementsund{"customer_id":"customer01","period":"2026-09"}ab. Unvollständige erforderliche Abdeckung liefert 409 und verhindert den Abschluss. - Lesen Sie die Abrechnung mit
GET /billing/statementsund exportieren Sie überGET /billing/export?statement_id=.... Bewahren Sie Abrechnung und Prüfsumme bei Ihren Unterlagen auf.
Speichermessungen müssen innerhalb von 300 Sekunden an beiden Grenzen der aktiven Zeit vorliegen; zwischen benachbarten Messungen dürfen höchstens 600 Sekunden liegen. Kostenpflichtiger Traffic benötigt vollständige Abdeckung und bekannte Zähler. Kostenloser Traffic darf ausdrücklich unbekannt bleiben, während bekannte Grund-/Speichergebühren abgeschlossen werden. Ersetzen Sie fehlende Messwerte nicht durch Schätzungen. Beträge werden kaufmännisch auf drei Dezimalstellen gerundet; Währungen bleiben getrennt.
Abgeschlossene Abrechnungen sind unveränderlich und je Kunde/Monat eindeutig. Erneuter Abschluss liefert dasselbe Dokument. Tarife, Positionen und Abdeckungsnachweise werden eingefroren; eine SHA-256-Prüfsumme ist enthalten. Anders als bei bestehenden S3-Berichten berechnen spätere Preisänderungen abgeschlossene Abrechnungen nicht neu. Steuern, Rechnungen, Zahlungen und Gutschriften verbleiben im Abrechnungssystem. Importieren Sie externe Referenzen aus CSV als Text.
Ereignisse, Webhooks und Abrechnungsintegration
GET /events?after=0 liefert berechtigungsgerechte Ereignisse; setzen Sie mit next_after fort. Ereignisse umfassen Dienstaktionen, Fehler, Quotagrenzen, fehlende Messwerte und abgeschlossene Abrechnungen. POST /webhooks registriert eine HTTPS-url und Ereignisnamen oder *. Speichern Sie das einmalig zurückgegebene Signaturgeheimnis geschützt.
Prüfen Sie X-Euronas-Signature als HMAC-SHA256 mit dem hexadezimal dekodierten Signaturgeheimnis über X-Euronas-Timestamp + "." + exakter Anfragekörper. Verwenden Sie ein kurzes Zeitfenster und erkennen Sie doppelte X-Euronas-Event-ID-Werte. Zustellung erfolgt mindestens einmal; GET /webhooks/deliveries zeigt Wiederholungen und endgültig fehlgeschlagene Zustellungen. Entfernen eines Webhooks beendet weitere Zustellungen.
Die optionale WHMCS-Anbindung gleicht ausdrücklich registrierte Dienste und konfigurierte Produkt-Tarif-Zuordnungen ab. Prüfen Sie die Vorschau vor der Anwendung. Unterstützt werden Bereitstellung, Sperrung, Freigabe, Tarifwechsel und Kündigung. Die Anbindung nimmt keine Bestellungen an, erstellt keine Rechnungen, zieht keine Zahlungen ein, löscht keine Kundendaten endgültig und übermittelt keine S3-Geheimnisse. Exportieren Sie abgeschlossene Abrechnungen für Ihr Abrechnungssystem.
Überwachung und Wiederherstellung
Anbieterpersonal verwendet GET /status, GET /monitoring und GET /backups. Auch HTTP 200 kann health=degraded enthalten. Prüfen Sie veraltete Messungen, Erfassungslücken, fehlgeschlagene oder verzögerte Vorgänge, Webhookfehler und Sicherungsaktualität. Sicherungsabfragen liefern Metadaten, keinen Download von Kundendaten.
Nach Aktivierung geplanter Sicherungen gelten standardmäßig sechs Stunden Sicherungsintervall und 30 Tage Aufbewahrung. Administratoren können Intervall, Aufbewahrung und Ziel konfigurieren. Diese Sicherungen schützen Hosting-Datensätze und Abrechnungen, aber keine Ceph-Objekte oder separate Traffic-Historie. Planen Sie Objektschutz und Kopien außerhalb der Installation gesondert.
Wiederherstellung erfordert Wartungsmodus, Prüfung der Sicherung und eine ausdrückliche Entscheidung zum Widerrufen oder Beibehalten wiederhergestellter Tokens/Webhooks. Beibehalten kann inzwischen widerrufene Zugriffe reaktivieren und Zustellungen wiederholen. Prüfen Sie Speicherabweichungen und unterbrochene Vorgänge vor der Freigabe. Wiederherstellung wiederholt keine Speicheränderungen automatisch und rekonstruiert keine fehlenden Messwerte. Der Hosting-Koordinator hat keinen automatischen Failover; prüfen Sie sein Wiederherstellungsverfahren vor dem Produktivbetrieb.