Zum Inhalt springen
Reditor
Entwickler

Reditor – Lizenz-API

Basis-URL /api/v1 · Maschinenlesbar: openapi.json

API für die Windows-Anwendung. Alle Antworten haben das Format `{ ok, data }` bzw. `{ ok: false, error: { code, message, details? } }`. **Authentifizierung:** `POST /licenses/activate` benötigt keine Authentifizierung – der Lizenzschlüssel im Body ist das Geheimnis. Die Antwort enthält ein Aktivierungs-Credential (`<activationId>.<secret>`), das der Client sicher speichert (z. B. Electron safeStorage/DPAPI) und für alle weiteren Aufrufe als `Authorization: Bearer <credential>` sendet. Der Einmal-Token wird danach nie wieder übertragen. **Lizenznachweis:** `proof` ist eine kompakte JWS (alg EdDSA/Ed25519). Der Client prüft sie lokal mit den Schlüsseln aus `GET /public/license-keys`, vergleicht `dev` mit SHA-256(installationId) (base64url) und akzeptiert sie bis `exp` (Offline-Toleranz, Standard 7 Tage). Eine serverseitige Sperrung erkennt ein Offline-Client erst bei der nächsten Synchronisierung bzw. spätestens mit Ablauf des Nachweises. Lizenzschlüssel werden nie in URLs übertragen. Rate-Limits antworten mit HTTP 429 und `Retry-After`.
POST/licenses/activate

Lizenzschlüssel einlösen und Gerät aktivieren

Erste Einlösung erzeugt eine Lizenz. Ein bereits eingelöster Schlüssel erzeugt NIE eine weitere Lizenz, kann aber im Rahmen des Gerätelimits weitere Geräte derselben Lizenz aktivieren. Dasselbe Gerät erneut aktivieren rotiert nur das Credential.

  • 201Aktiviert
  • 400VALIDATION_ERROR / INVALID_JSON
  • 403LICENSE_EXPIRED / LICENSE_REVOKED / LICENSE_SUSPENDED
  • 404INVALID_TOKEN
  • 409DEVICE_LIMIT_REACHED
  • 410TOKEN_EXPIRED / TOKEN_DISABLED
  • 429RATE_LIMITED
POST/licenses/refreshBearer-Credential

Neuen Lizenznachweis abrufen (Synchronisierung)

  • 200Erfolg
  • 401INVALID_ACTIVATION – Credential ungültig oder Aktivierung zurückgesetzt
  • 403LICENSE_EXPIRED / LICENSE_REVOKED / LICENSE_SUSPENDED – details.license enthält den Status; Client muss auf Free zurückfallen
  • 429RATE_LIMITED
POST/licenses/usageBearer-Credential

Prepaid: Aufnahmezeit buchen

Meldet die tatsächlich aufgenommenen Sekunden einer Aufnahme. usageKey (z. B. die Aufnahme-ID) macht die Meldung idempotent; das Guthaben wird nie negativ. Lizenzen ohne Guthaben (unbegrenzt) buchen nichts. Antwort enthält einen neuen Nachweis mit der Restzeit (Claim rec, null = unbegrenzt).

  • 200{ ok: true, data: { booked, license, proof, proofExpiresAt, refreshAfter, offlineDays } }
  • 401INVALID_ACTIVATION
  • 403LICENSE_EXPIRED / LICENSE_REVOKED / LICENSE_SUSPENDED
  • 429RATE_LIMITED
POST/licenses/deactivateBearer-Credential

Dieses Gerät abmelden (Geräteplatz freigeben)

  • 200{ ok: true, data: { deactivated: true } }
  • 401INVALID_ACTIVATION
GET/licenses/statusBearer-Credential

Lizenzstatus dieser Aktivierung

  • 200{ license, activation }
  • 401INVALID_ACTIVATION
GET/licenses/featuresBearer-Credential

Gültige Entitlements

Ohne Authorization-Header: Features des Free-Plans (keine Registrierung nötig). Mit Credential: Features der Lizenz bzw. Free bei inaktiver Lizenz.

  • 200Erfolg
  • 401INVALID_ACTIVATION
GET/public/license-keys

Öffentliche Signaturschlüssel (aktuell + vorherige für Rotation)

  • 200Erfolg
GET/releases/latest

Neueste veröffentlichte Version

  • 200Erfolg
  • 404NOT_FOUND
API-Dokumentation · Reditor