API-Referenz

Organisationen

Mitglieder, Schlüssel, Abrechnung und Lizenzen beim gehosteten Dienst.

Beim gehosteten Dienst werden Organisationen, Mitglieder, API-Schlüssel, Guthaben und Bereitstellungslizenzen über die Organisations-API unter https://ephemer.al/v1 verwaltet. Das Kundenportal und das Dashboard nutzen sie für Sie; diese Seite richtet sich an Skripte und Integrationen.

Authentifizierung

Diese Endpunkte handeln im Namen einer Person. Melden Sie sich mit POST /v1/auth/login an und senden Sie das zurückgegebene token als Bearer-Token. Sitzungen dauern 30 Tage; POST /v1/auth/logout beendet eine vorzeitig.

Terminal
curl https://ephemer.al/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"…"}'

Die Antwort lautet {"token": "...", "user": {...}, "organizations": [...]}. Jede Organisation hat id, name und Ihre role. Alles Folgende außer dem Auflisten und Erstellen von Organisationen und dem Annehmen einer Einladung erfordert die Rolle Inhaber oder Admin in der im Pfad genannten Organisation.

API-Schlüssel werden hier abgelehnt
Organisations-API-Schlüssel, auch Admin-Schlüssel, können die Endpunkte für Mitglieder, Schlüssel, Abrechnung oder Lizenzen nicht aufrufen. So kann ein offengelegter Schlüssel weder Personen hinzufügen noch Schlüssel ausstellen oder Geld ausgeben. Sie können das Guthaben ihrer eigenen Organisation lesen.

Organisationen

GET/v1/organizations
Listet die Organisationen auf, denen Sie angehören, jeweils mit id, name und role.
POST/v1/organizations
Erstellt eine Organisation aus {"name": "..."} und macht Sie zu ihrem Inhaber. Liefert 201 mit {"id": "org_...", "name": "...", "role": "owner"}.
PATCH/v1/organizations/{id}
Inhaber oder Admin. Benennt die Organisation mit {"name": "..."} um. Der Name wird getrimmt und muss 1 bis 200 Zeichen lang sein. Liefert {"id": "org_...", "name": "...", "role": "owner"}. Mitglieder erhalten 403.

Mitglieder

GET/v1/organizations/{id}/members
Listet Mitglieder mit id, email, name, role und avatar_url auf.
DELETE/v1/organizations/{id}/members/{user_id}
Entfernt ein Mitglied. Admins können Mitglieder entfernen; nur der Inhaber kann einen Admin entfernen. Der Inhaber kann nicht entfernt werden.
PATCH/v1/organizations/{id}/members/{user_id}
Nur Inhaber. Ändert die Rolle eines Mitglieds mit {"role": "admin"} oder {"role": "member"}.
POST/v1/organizations/{id}/ownership
Nur Inhaber. Überträgt das Eigentum mit {"user_id": "..."} auf ein bestehendes Mitglied. Sie werden Admin.

Einladungen

POST/v1/organizations/{id}/invitations
Lädt jemanden mit {"email": "...", "role": "member"} ein. role ist admin oder member. Liefert 201 mit token, url und email_delivery.

email_delivery ist accepted, wenn der E-Mail-Anbieter die Nachricht angenommen hat, was nicht garantiert, dass sie im Posteingang angekommen ist. Lautet der Wert unavailable oder failed, geben Sie die zurückgegebene url auf privatem Weg weiter. Einladungen laufen nach 7 Tagen ab. Die eingeladene Person nimmt sie mit POST /v1/invitations/accept und {"token": "..."} an, angemeldet mit der eingeladenen E-Mail-Adresse.

API-Schlüssel

GET/v1/organizations/{id}/keys
Listet Schlüssel mit id, name, role und created_at auf. Geheimnisse werden nie aufgelistet.
POST/v1/organizations/{id}/keys
Erstellt einen Schlüssel aus {"name": "...", "role": "member"}. role ist member oder admin und standardmäßig member.
201 Created
{
  "id": "key_0b7e4c2a9d1f8356e4a2c7b9d0f1e3a5",
  "name": "production-server",
  "role": "member",
  "key": "eak_…"
}
Der Wert key wird nur einmal zurückgegeben. Speichern Sie ihn, bevor Sie die Antwort schließen.
DELETE/v1/organizations/{id}/keys/{key_id}
Widerruft den Schlüssel sofort.

Profil

Diese erfordern eine angemeldete Benutzersitzung; API-Schlüssel werden abgelehnt. Benutzer und jeder Eintrag in members enthalten avatar_url: einen Pfad wie /v1/users/usr_…/avatar?v=3f2a… oder null.

PUT/v1/me/avatar
Das rohe Bild als Body, mit Content-Type image/png, image/jpeg oder image/webp, bis zu 256 KiB. Liefert denselben Body wie GET /v1/auth/me. Höchstens 20 Uploads pro Stunde.
DELETE/v1/me/avatar
Entfernt das Bild.
POST/v1/me/password
Ändert Ihr Passwort mit {"current_password": "...", "new_password": "..."}. Das neue Passwort hat 12 bis 72 Bytes. Ihre übrigen Sitzungen werden abgemeldet; die, die die Anfrage stellt, bleibt angemeldet. Höchstens 10 Versuche pro Stunde.
GET/v1/users/{user_id}/avatar
Das Bild, für diesen Benutzer und Personen, die mit ihm eine Organisation teilen; alle anderen erhalten 404. Die URL ändert sich, wenn sich das Bild ändert, sodass sie dauerhaft zwischengespeichert werden kann.

Abrechnung

Geldbeträge verwenden in diesen Endpunkten Cent für Stripe-Beträge und Micros für Guthabenbeträge. Siehe Budgets und Abrechnung.

GET/v1/organizations/{id}/balance
Jedes Mitglied oder ein API-Schlüssel der Organisation. Liefert {"balance_micros": ..., "reserved_micros": ..., "available_micros": ...}: gehaltenes Guthaben, für nicht abgerechnete Ausführungen reserviertes und für neue Ausführungen verfügbares. Prüfen Sie available_micros gegen das Budget einer Ausführung, bevor Sie sie starten.
GET/v1/organizations/{id}/billing
Liefert das Guthaben und die Zahlungseinstellungen.
balance_micros, reserved_micros, available_microsinteger
Gehaltenes Guthaben, für nicht abgerechnete Ausführungen reserviertes und für neue Ausführungen verfügbares.
ledgerarray
Die letzten 100 Einträge, jeweils mit amount_micros, description, created_at und, soweit zutreffend, run_id, payment_id und topup_id.
purchase_limitsobject
min_amount_cents, max_amount_cents und min_threshold_cents. Validieren Sie gegen diese Werte, statt Limits fest zu codieren.
auto_topupobject
enabled, threshold_cents, amount_cents, payment_method_saved und last_topup_status.
payment_methodobject | null
Die für Aufladungen verwendete Karte: brand, last4, exp_month, exp_year und source.
payment_method_syncstring
synced oder unavailable, wenn Stripe nicht erreichbar war. Eine fehlgeschlagene Abfrage bedeutet nicht, dass keine Karte vorhanden ist.
stripe_configuredboolean
Ob Zahlungen verfügbar sind.
POST/v1/organizations/{id}/billing/checkout
Startet einen Guthabenkauf mit {"amount_cents": 2500} und liefert {"url": "..."} für Stripe Checkout. Fügen Sie "save_payment_method": true hinzu, um die Karte für automatische Aufladungen zu speichern. Beträge liegen zwischen 500 und 1.000.000 Cent.
POST/v1/organizations/{id}/billing/portal
Liefert {"url": "..."} für das Stripe-Kundenportal, in dem Karten verwaltet werden.
PUT/v1/organizations/{id}/billing/auto-topup
Aktiviert die automatische Aufladung mit {"enabled": true, "threshold_cents": 1000, "amount_cents": 5000, "consent": true} oder deaktiviert sie mit {"enabled": false}. Zum Aktivieren ist eine gespeicherte Karte nötig.
GET/v1/organizations/{id}/billing/payments
Zahlungsverlauf, die neuesten zuerst. Erwartet limit (1 bis 100, Standard 25) und cursor und liefert {"payments": [...], "next_cursor": "..."}. Jede Zahlung hat amount_cents, refunded_cents, disputed_cents, refund_status, created_at, topup_id und receipt_endpoint.
GET/v1/organizations/{id}/billing/payments/{payment_id}/receipt
Liefert {"url": "..."} für den Stripe-Beleg oder 404, wenn Stripe keinen bereitgestellt hat.

Bereitstellungslizenzen

GET/v1/organizations/{id}/license
Der Self-Hosting-Anspruch der Organisation oder {"entitlement": null}.
GET/v1/organizations/{id}/deployments
Listet registrierte Installationen auf.
POST/v1/organizations/{id}/deployments
Registriert eine Installation mit {"name": "..."} und liefert ihr Lizenz-Token einmalig zurück, zusammen mit der von Ephemeral erzeugten Maschinen-ID (oder der machine_id, die Sie senden).
DELETE/v1/organizations/{id}/deployments/{deployment_id}
Deaktiviert eine Installation.
Bereitstellungslizenzen beschreibt diese Felder und wie Installationen das Token verwenden.
© 2026 EphemeralProduziert von erni.works
esc

Keine Treffer für „“.