API-Key erzeugen
Im eingeloggten Bereich unter Developers einen Key mit den benötigten Scopes erstellen. Der Klartext-Key wird nur einmal angezeigt.
/api/v1
Automatisiere Mitarbeiter, Zahlungsläufe, Reports und Webhooks. Die API ist mandantenisoliert, scope-basiert und verlangt bei schreibenden Geldaktionen einen Idempotency-Key.
Im eingeloggten Bereich unter Developers einen Key mit den benötigten Scopes erstellen. Der Klartext-Key wird nur einmal angezeigt.
Jeder Request nutzt Authorization: Bearer tgm_.... Schreibende Geldaktionen brauchen zusätzlich Idempotency-Key.
Mitarbeiter synchronisieren, Zahlungslauf erstellen, Dry Run ausführen, Freigabe setzen und erst danach ausführen.
Quickstart
Die Beispiele zeigen den Kernfluss. Ersetze den API-Key durch einen Key aus deinem trinkgeldMeister Account.
package main
import ("bytes"; "encoding/json"; "fmt"; "io"; "log"; "net/http")
func main() {
body, _ := json.Marshal(map[string]any{"name":"Mai","items":[]map[string]any{{"operator_id":"17","amount":5125,"currency":"EUR"}}})
req, _ := http.NewRequest("POST", "https://trinkgeldmeister.com/api/v1/payout-runs", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer tgm_test_...")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Idempotency-Key", "run-001")
res, err := http.DefaultClient.Do(req); if err != nil { log.Fatal(err) }
defer res.Body.Close()
raw, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(raw))
}const headers = { Authorization: "Bearer tgm_test_...", "Content-Type": "application/json" };
const res = await fetch("https://trinkgeldmeister.com/api/v1/payout-runs", {
method: "POST",
headers: { ...headers, "Idempotency-Key": "run-2026-05-16" },
body: JSON.stringify({ name: "Trinkgeld 16.05.2026", items: [{ operator_id: "17", amount: 5125, currency: "EUR" }] })
});
console.log(res.status, await res.json());import requests
headers = {"Authorization": "Bearer tgm_test_...", "Content-Type": "application/json"}
payload = {"name": "Trinkgeld 16.05.2026", "items": [
{"operator_id": "17", "amount": 5125, "currency": "EUR"}
]}
res = requests.post("https://trinkgeldmeister.com/api/v1/payout-runs", headers={**headers, "Idempotency-Key": "run-2026-05-16"}, json=payload)
print(res.status_code, res.json())use reqwest::Client;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
let res = Client::new()
.post("https://trinkgeldmeister.com/api/v1/payout-runs")
.bearer_auth("tgm_test_...")
.header("Idempotency-Key", "run-001")
.json(&json!({"name":"Mai","items":[{"operator_id":"17","amount":5125,"currency":"EUR"}]}))
.send().await?;
println!("{} {}", res.status(), res.text().await?);
Ok(())
}import Foundation
let apiKey = "tgm_test_..."
let base = "https://trinkgeldmeister.com"
let payload = ["name":"Mai","items":[["operator_id":"17","amount":5125,"currency":"EUR"]]] as [String : Any]
var request = URLRequest(url: URL(string: "\(base)/api/v1/payout-runs")!)
request.httpMethod = "POST"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("run-001", forHTTPHeaderField: "Idempotency-Key")
request.httpBody = try JSONSerialization.data(withJSONObject: payload)
let (data, response) = try await URLSession.shared.data(for: request)
print((response as! HTTPURLResponse).statusCode, String(data: data, encoding: .utf8)!)export TGM_BASE="https://trinkgeldmeister.com"
export TGM_KEY="tgm_test_..."
curl "$TGM_BASE/api/v1/tenant" \
-H "Authorization: Bearer $TGM_KEY"
curl -X POST "$TGM_BASE/api/v1/payout-runs" \
-H "Authorization: Bearer $TGM_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: run-2026-05-16" \
-d '{"name":"Trinkgeld 16.05.2026","items":[{"operator_id":"17","amount":5125,"currency":"EUR","transfer_text":"Trinkgeld 16.05.2026"}]}'Referenz
Alle Endpunkte sind tenant-isoliert. SuperAdmin-Endpunkte sind nur für interne Administration und nutzen den MegaAdmin-Token.
Liest Stammdaten, Plan und Transfertext des aktuellen Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/tenant' \
-H 'Authorization: Bearer tgm_test_...'Aktualisiert Report-Email oder Überweisungstext-Vorlage.
{"report_email":"finance@example.test","transfer_text_template":"Trinkgeld {{tenant_name}} {{date}}"}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/tenant' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"report_email":"finance@example.test","transfer_text_template":"Trinkgeld {{tenant_name}} {{date}}"}'Listet Mitarbeiter des API-Key-Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/employees' \
-H 'Authorization: Bearer tgm_test_...'Legt einen Mitarbeiter inklusive Operator-ID, Handy und Auszahlungskonto an.
{"operator_id":"99","name":"API Mitarbeiter","phone":"0170 1234567","status":"active","iban":"DE89370400440532013000","account_holder":"API Mitarbeiter"}curl -X POST 'https://trinkgeldmeister.com/api/v1/employees' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"operator_id":"99","name":"API Mitarbeiter","phone":"0170 1234567","status":"active","iban":"DE89370400440532013000","account_holder":"API Mitarbeiter"}'Liest einen Mitarbeiter innerhalb des API-Key-Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/employees/1' \
-H 'Authorization: Bearer tgm_test_...'Aktualisiert einen Mitarbeiter innerhalb des Mandanten.
{"location":"Bar","status":"active","phone":"0170 7654321"}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/employees/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"location":"Bar","status":"active","phone":"0170 7654321"}'Setzt einen Mitarbeiter innerhalb des Mandanten auf deleted.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/employees/1' \
-H 'Authorization: Bearer tgm_test_...'Importiert oder aktualisiert Mitarbeiter per CSV mit Operator-ID oder Mitarbeiter-Referenz.
{"csv":"operator_id,name,email,phone,status,iban,account_holder\n77,API Import,api-import@example.test,0170 1234567,active,DE89370400440532013000,API Import\n"}curl -X POST 'https://trinkgeldmeister.com/api/v1/employees/import' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"csv":"operator_id,name,email,phone,status,iban,account_holder\n77,API Import,api-import@example.test,0170 1234567,active,DE89370400440532013000,API Import\n"}'Listet konfigurierte Provider-Verbindungen.
curl -X GET 'https://trinkgeldmeister.com/api/v1/providers' \
-H 'Authorization: Bearer tgm_test_...'Legt eine Provider-Verbindung mit Secret-Referenzen an.
{"provider":"stripe_global_payouts","display_name":"Stripe Sandbox","mode":"sandbox","credential_ref":"env:STRIPE_SECRET_KEY","webhook_secret_ref":"env:STRIPE_GLOBAL_PAYOUTS_WEBHOOK_SECRET","financial_account_ref":"fa_test","active":false}curl -X POST 'https://trinkgeldmeister.com/api/v1/providers' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"provider":"stripe_global_payouts","display_name":"Stripe Sandbox","mode":"sandbox","credential_ref":"env:STRIPE_SECRET_KEY","webhook_secret_ref":"env:STRIPE_GLOBAL_PAYOUTS_WEBHOOK_SECRET","financial_account_ref":"fa_test","active":false}'Aktualisiert Anzeigename, Status, Modus oder Secret-Referenzen einer Provider-Verbindung.
{"display_name":"Stripe Sandbox Updated","active":true}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/providers/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"display_name":"Stripe Sandbox Updated","active":true}'Deaktiviert eine Provider-Verbindung fachlich und erzeugt ein `provider.disabled` Event.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/providers/1' \
-H 'Authorization: Bearer tgm_test_...'Prüft Key-, Modus-, Webhook- und Funding-Kontext der Provider-Verbindung.
curl -X POST 'https://trinkgeldmeister.com/api/v1/providers/1/test' \
-H 'Authorization: Bearer tgm_test_...'Ersetzt Credential-, Webhook- oder Funding-Referenzen, ohne Secret-Werte offenzulegen.
{"credential_ref":"env:STRIPE_SECRET_KEY_NEXT"}curl -X POST 'https://trinkgeldmeister.com/api/v1/providers/1/rotate-secret-ref' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"credential_ref":"env:STRIPE_SECRET_KEY_NEXT"}'Parst eine CSV-Zahlungsliste mit optionalem Spaltenmapping und erzeugt einen geprüften Auszahlungslauf.
{"name":"Mai Trinkgeld","csv":"Bediener Nr,Trinkgeld EUR,Zweck\n17,51.25,Trinkgeld Mai\n","mapping":{"operator_id":"Bediener Nr","amount":"Trinkgeld EUR","transfer_text":"Zweck"}}curl -X POST 'https://trinkgeldmeister.com/api/v1/imports' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Idempotency-Key: idem-post-api-v1-imports' \
-H 'Content-Type: application/json' \
-d '{"name":"Mai Trinkgeld","csv":"Bediener Nr,Trinkgeld EUR,Zweck\n17,51.25,Trinkgeld Mai\n","mapping":{"operator_id":"Bediener Nr","amount":"Trinkgeld EUR","transfer_text":"Zweck"}}'Liest Importstatus und den verknüpften Auszahlungslauf.
curl -X GET 'https://trinkgeldmeister.com/api/v1/imports/imp_1' \
-H 'Authorization: Bearer tgm_test_...'Listet die normalisierten Importzeilen aus den gespeicherten Auszahlungspositionen.
curl -X GET 'https://trinkgeldmeister.com/api/v1/imports/imp_1/rows' \
-H 'Authorization: Bearer tgm_test_...'Gibt den aktuellen Validierungsstatus des Imports zurück.
curl -X POST 'https://trinkgeldmeister.com/api/v1/imports/imp_1/validate' \
-H 'Authorization: Bearer tgm_test_...'Erzeugt einen Lauf aus JSON-Positionen.
{"name":"Mai Trinkgeld","items":[{"operator_id":"17","amount":5125,"currency":"EUR"}]}curl -X POST 'https://trinkgeldmeister.com/api/v1/payout-runs' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Idempotency-Key: idem-post-api-v1-payout-runs' \
-H 'Content-Type: application/json' \
-d '{"name":"Mai Trinkgeld","items":[{"operator_id":"17","amount":5125,"currency":"EUR"}]}'Listet Auszahlungsläufe des Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/payout-runs' \
-H 'Authorization: Bearer tgm_test_...'Liest Detailstatus und Positionen eines Laufs.
curl -X GET 'https://trinkgeldmeister.com/api/v1/payout-runs/1' \
-H 'Authorization: Bearer tgm_test_...'Führt den technischen Probelauf ohne Geldbewegung aus.
curl -X POST 'https://trinkgeldmeister.com/api/v1/payout-runs/1/dry-run' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Idempotency-Key: idem-post-api-v1-payout-runs-1-dry-run'Setzt den Lauf auf freigegeben.
curl -X POST 'https://trinkgeldmeister.com/api/v1/payout-runs/1/approve' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Idempotency-Key: idem-post-api-v1-payout-runs-1-approve'Führt einen freigegebenen Lauf aus, sofern Abo und Feature Flags passen.
curl -X POST 'https://trinkgeldmeister.com/api/v1/payout-runs/1/execute' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Idempotency-Key: idem-post-api-v1-payout-runs-1-execute'Setzt einen Lauf auf canceled, bevor eine Live-Ausführung erfolgt.
curl -X POST 'https://trinkgeldmeister.com/api/v1/payout-runs/1/cancel' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Idempotency-Key: idem-post-api-v1-payout-runs-1-cancel'Erstellt für eine fehlgeschlagene Auszahlungsposition idempotent einen neuen Provider-Versuch und schreibt das Journal.
curl -X POST 'https://trinkgeldmeister.com/api/v1/payout-items/1/retry' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Idempotency-Key: idem-post-api-v1-payout-items-1-retry'Lädt den CSV-Report für einen Auszahlungslauf des API-Key-Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/reports/payout-runs/1.csv' \
-H 'Authorization: Bearer tgm_test_...'Lädt den PDF-Report für einen Auszahlungslauf des API-Key-Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/reports/payout-runs/1.pdf' \
-H 'Authorization: Bearer tgm_test_...'Lädt den maschinenlesbaren JSON-Report für einen Auszahlungslauf des API-Key-Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/reports/payout-runs/1.json' \
-H 'Authorization: Bearer tgm_test_...'Listet Journalbewegungen und Provider-Referenzen.
curl -X GET 'https://trinkgeldmeister.com/api/v1/journal' \
-H 'Authorization: Bearer tgm_test_...'Listet alle Mandanten. Authentifizierung über X-MegaAdmin-Token oder Bearer MegaAdmin Token.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/tenants' \
-H 'Authorization: Bearer tgm_test_...'Legt einen Mandanten an.
{"key":"api-tenant","name":"API Tenant","report_email":"api@example.test","status":"active"}curl -X POST 'https://trinkgeldmeister.com/api/v1/superadmin/tenants' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"key":"api-tenant","name":"API Tenant","report_email":"api@example.test","status":"active"}'Liest einen Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/tenants/1' \
-H 'Authorization: Bearer tgm_test_...'Aktualisiert Mandantenstammdaten.
{"name":"API Tenant Updated","plan_key":"team"}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/superadmin/tenants/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"name":"API Tenant Updated","plan_key":"team"}'Setzt einen Mandanten auf deleted.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/superadmin/tenants/1' \
-H 'Authorization: Bearer tgm_test_...'Listet User/Rollen für `tenant_id` oder den ersten Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/users' \
-H 'Authorization: Bearer tgm_test_...'Legt einen Tenant-User mit Rolle an.
{"tenant_id":1,"name":"API Owner","email":"owner@example.test","phone":"+491701234567","role":"owner","phone_verified":true}curl -X POST 'https://trinkgeldmeister.com/api/v1/superadmin/users' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"tenant_id":1,"name":"API Owner","email":"owner@example.test","phone":"+491701234567","role":"owner","phone_verified":true}'Aktualisiert Rolle, Status oder Kontaktdaten eines Tenant-Users.
{"role":"finance","status":"active"}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/superadmin/users/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"role":"finance","status":"active"}'Setzt einen Tenant-User auf deleted.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/superadmin/users/1' \
-H 'Authorization: Bearer tgm_test_...'Listet Mitarbeiter für `tenant_id` oder den ersten Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/employees' \
-H 'Authorization: Bearer tgm_test_...'Legt einen Mitarbeiter inklusive Operator-ID und maskierter IBAN an.
{"tenant_id":1,"operator_id":"901","name":"API Employee","iban":"DE89370400440532013000","account_holder":"API Employee"}curl -X POST 'https://trinkgeldmeister.com/api/v1/superadmin/employees' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"tenant_id":1,"operator_id":"901","name":"API Employee","iban":"DE89370400440532013000","account_holder":"API Employee"}'Aktualisiert Mitarbeiterstamm, Handy und Kontodaten.
{"location":"API Bar","phone":"0170 7654321"}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/superadmin/employees/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"location":"API Bar","phone":"0170 7654321"}'Setzt einen Mitarbeiter auf deleted.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/superadmin/employees/1' \
-H 'Authorization: Bearer tgm_test_...'Listet Provider-Verbindungen für `tenant_id` oder den ersten Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/providers' \
-H 'Authorization: Bearer tgm_test_...'Legt eine Provider-Verbindung mit Secret-Referenzen an und kann die Konfiguration testen.
{"tenant_id":1,"provider":"stripe_global_payouts","display_name":"API Stripe","mode":"sandbox","credential_ref":"env:STRIPE_SECRET_KEY","webhook_secret_ref":"env:STRIPE_GLOBAL_PAYOUTS_WEBHOOK_SECRET","financial_account_ref":"fa_test","active":true,"test":true}curl -X POST 'https://trinkgeldmeister.com/api/v1/superadmin/providers' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"tenant_id":1,"provider":"stripe_global_payouts","display_name":"API Stripe","mode":"sandbox","credential_ref":"env:STRIPE_SECRET_KEY","webhook_secret_ref":"env:STRIPE_GLOBAL_PAYOUTS_WEBHOOK_SECRET","financial_account_ref":"fa_test","active":true,"test":true}'Aktualisiert Provider-Status, Modus oder Secret-Referenzen.
{"display_name":"Stripe Sandbox Updated","status":"active"}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/superadmin/providers/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"display_name":"Stripe Sandbox Updated","status":"active"}'Deaktiviert eine Provider-Verbindung.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/superadmin/providers/1' \
-H 'Authorization: Bearer tgm_test_...'Listet Auszahlungsläufe für `tenant_id` oder den ersten Mandanten.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/payout-runs' \
-H 'Authorization: Bearer tgm_test_...'Erzeugt einen Auszahlungslauf für einen Mandanten aus JSON-Positionen.
{"tenant_id":1,"name":"SuperAdmin Run","items":[{"operator_id":"17","amount":5125,"currency":"EUR"}]}curl -X POST 'https://trinkgeldmeister.com/api/v1/superadmin/payout-runs' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"tenant_id":1,"name":"SuperAdmin Run","items":[{"operator_id":"17","amount":5125,"currency":"EUR"}]}'Liest einen Auszahlungslauf inklusive Positionen.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/payout-runs/1' \
-H 'Authorization: Bearer tgm_test_...'Ändert den Status eines Auszahlungslaufs.
{"status":"approved"}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/superadmin/payout-runs/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"status":"approved"}'Setzt einen Auszahlungslauf auf canceled.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/superadmin/payout-runs/1' \
-H 'Authorization: Bearer tgm_test_...'Liest Landing- und SMS-Gateway-Konfiguration ohne Klartext-Secrets.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/settings' \
-H 'Authorization: Bearer tgm_test_...'Aktualisiert Landing-Texte oder SMS-Gateway-Secret-Referenzen.
{"landing":{"hero_title":"API Landing"},"sms_gateway":{"sender":"TGM","dry_run":true}}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/superadmin/settings' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"landing":{"hero_title":"API Landing"},"sms_gateway":{"sender":"TGM","dry_run":true}}'Listet Preisplaene.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/pricing-plans' \
-H 'Authorization: Bearer tgm_test_...'Legt einen Preisplan an oder aktualisiert ihn per Key.
{"key":"api-plan","name":"API Plan","monthly_price":4900,"employees_monthly":25,"payout_runs_monthly":6,"payout_amount_monthly":500000,"status":"active"}curl -X POST 'https://trinkgeldmeister.com/api/v1/superadmin/pricing-plans' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"key":"api-plan","name":"API Plan","monthly_price":4900,"employees_monthly":25,"payout_runs_monthly":6,"payout_amount_monthly":500000,"status":"active"}'Liest einen Preisplan.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/pricing-plans/1' \
-H 'Authorization: Bearer tgm_test_...'Aktualisiert einen Preisplan inklusive Null-Werten für Preis oder Limits.
{"name":"Starter Updated","monthly_price":0}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/superadmin/pricing-plans/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"name":"Starter Updated","monthly_price":0}'Setzt einen Preisplan auf inactive.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/superadmin/pricing-plans/1' \
-H 'Authorization: Bearer tgm_test_...'Listet Webhook-Endpunkte je Mandant.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/webhooks' \
-H 'Authorization: Bearer tgm_test_...'Listet API Keys ohne Hash oder Klartext-Key für `tenant_id`.
curl -X GET 'https://trinkgeldmeister.com/api/v1/superadmin/api-keys' \
-H 'Authorization: Bearer tgm_test_...'Legt einen API Key an und gibt nur Metadaten zurück, nicht den Klartext-Key.
{"tenant_id":1,"name":"API Managed Key","scopes":"tenant.read employee.read"}curl -X POST 'https://trinkgeldmeister.com/api/v1/superadmin/api-keys' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"tenant_id":1,"name":"API Managed Key","scopes":"tenant.read employee.read"}'Aktualisiert Name, Scopes oder Status eines API Keys ohne Hash oder Klartext-Key offenzulegen.
{"name":"API Managed Key Updated","scopes":"tenant.read employee.read payout.read","status":"active"}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/superadmin/api-keys/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"name":"API Managed Key Updated","scopes":"tenant.read employee.read payout.read","status":"active"}'Sperrt einen API Key.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/superadmin/api-keys/1' \
-H 'Authorization: Bearer tgm_test_...'Legt einen Kunden-Webhook für einen Mandanten an.
{"tenant_id":1,"name":"API Webhook","url":"https://example.test/tgm","events":"payout.*"}curl -X POST 'https://trinkgeldmeister.com/api/v1/superadmin/webhooks' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"tenant_id":1,"name":"API Webhook","url":"https://example.test/tgm","events":"payout.*"}'Aktualisiert Name, URL, Events, Secret-Referenz oder Status eines Kunden-Webhooks.
{"name":"API Webhook Updated","url":"https://example.test/tgm-updated","events":"payout.*,billing.*","secret_ref":"env:TGM_WEBHOOK_SECRET","status":"active"}curl -X PATCH 'https://trinkgeldmeister.com/api/v1/superadmin/webhooks/1' \
-H 'Authorization: Bearer tgm_test_...' \
-H 'Content-Type: application/json' \
-d '{"name":"API Webhook Updated","url":"https://example.test/tgm-updated","events":"payout.*,billing.*","secret_ref":"env:TGM_WEBHOOK_SECRET","status":"active"}'Deaktiviert einen Kunden-Webhook.
curl -X DELETE 'https://trinkgeldmeister.com/api/v1/superadmin/webhooks/1' \
-H 'Authorization: Bearer tgm_test_...'