System API Keys
API Keys {{ $tokens->count() }}
{{-- ═══ Left: Keys + Endpoint-Docs ═══ --}}
{{-- Keys --}}
Aktive Keys
@if($tokens->isEmpty())
Keine API Keys vorhanden
Erstelle deinen ersten Key um externe Anwendungen zu verbinden.
@else {{-- Header --}}
Name Scopes Modus Erstellt
{{-- Rows --}} @foreach($tokens as $token) @php $abilities = $token->abilities; $visible = array_slice($abilities, 0, 2); $rest = count($abilities) - 2; @endphp
{{-- Name --}}
{{ $token->name }}
{{-- Scopes --}}
@foreach($visible as $scope) @php $short = collect(explode(':', $scope))->map(fn($p) => $p[0])->join(':'); @endphp {{ $short }} @endforeach @if($rest > 0) @endif · {{ $token->created_at->format('d.m.Y') }}
{{-- Modus --}}
@if($token->sandbox) Sandbox @else Live @endif
{{-- Date (desktop only) --}}
{{ $token->created_at->format('d.m.Y') }}
{{-- Actions --}}
@endforeach @endif
{{-- Endpoint Reference --}}
Endpunkte Basis-URL: /api/v1
{{-- Tab switcher --}}
@foreach([ ['mailboxes', 'Mailboxen'], ['aliases', 'Aliases'], ['domains', 'Domains'], ] as [$key, $label]) @endforeach
{{-- Mailboxen --}}
@php $mbRoutes = [ ['GET', '/mailboxes', 'mailboxes:read', 'Alle Mailboxen auflisten', '?domain=example.com&active=true'], ['GET', '/mailboxes/{id}', 'mailboxes:read', 'Einzelne Mailbox abrufen', null], ['POST', '/mailboxes', 'mailboxes:write', 'Neue Mailbox erstellen', null], ['PATCH', '/mailboxes/{id}', 'mailboxes:write', 'Mailbox aktualisieren', null], ['DELETE', '/mailboxes/{id}', 'mailboxes:write', 'Mailbox löschen', null], ]; @endphp @include('livewire.ui.system.partials.api-endpoint-list', ['routes' => $mbRoutes])
POST-Body (Erstellen)
{
  "email": "user@example.com",
  "password": "sicher123",
  "display_name": "Max Mustermann",
  "quota_mb": 1024,
  "is_active": true
}
{{-- Aliases --}}
@php $alRoutes = [ ['GET', '/aliases', 'aliases:read', 'Alle Aliases auflisten', '?domain=example.com'], ['GET', '/aliases/{id}', 'aliases:read', 'Einzelnen Alias abrufen', null], ['POST', '/aliases', 'aliases:write', 'Neuen Alias erstellen', null], ['DELETE', '/aliases/{id}', 'aliases:write', 'Alias löschen', null], ]; @endphp @include('livewire.ui.system.partials.api-endpoint-list', ['routes' => $alRoutes])
POST-Body (Erstellen)
{
  "local": "info",
  "domain": "example.com",
  "recipients": ["admin@example.com"],
  "is_active": true
}
{{-- Domains --}}
@php $doRoutes = [ ['GET', '/domains', 'domains:read', 'Alle Domains auflisten', null], ['GET', '/domains/{id}', 'domains:read', 'Einzelne Domain abrufen', null], ['POST', '/domains', 'domains:write', 'Neue Domain erstellen', null], ['DELETE', '/domains/{id}', 'domains:write', 'Domain löschen', null], ]; @endphp @include('livewire.ui.system.partials.api-endpoint-list', ['routes' => $doRoutes])
POST-Body (Erstellen)
{
  "domain": "example.com",
  "description": "Hauptdomain",
  "max_mailboxes": 100,
  "max_aliases": 200,
  "default_quota_mb": 1024
}
{{-- ═══ Right: Sidebar ═══ --}}
{{-- Auth-Info --}}
Authentifizierung
Sende den Token als HTTP-Header mit jeder Anfrage:
Authorization: Bearer <token>
Content-Type: application/json
Token prüfen:
GET /api/v1/me
{{-- Sandbox --}}
Sandbox
Sandbox-Keys simulieren alle Schreiboperationen. Die API antwortet realistisch — aber es werden keine Änderungen gespeichert.
"sandbox": true
Jede Write-Response enthält dieses Feld wenn der Key im Sandbox-Modus ist.
{{-- Scopes --}}
Scopes
@foreach([ ['mailboxes:read', 'Mailboxen lesen'], ['mailboxes:write', 'Mailboxen erstellen / ändern / löschen'], ['aliases:read', 'Aliases lesen'], ['aliases:write', 'Aliases erstellen / löschen'], ['domains:read', 'Domains lesen'], ['domains:write', 'Domains erstellen / löschen'], ] as [$scope, $desc])
{{ $scope }} {{ $desc }}
@endforeach
{{-- Response codes --}}
Status-Codes
@foreach([ ['200', 'var(--mw-t3)', 'OK — Abfrage erfolgreich'], ['201', '#34d399', 'Created — Ressource erstellt'], ['204', 'var(--mw-t3)', 'No Content — Gelöscht'], ['401', '#f87171', 'Unauthorized — Token fehlt'], ['403', '#f87171', 'Forbidden — Scope fehlt'], ['404', '#fb923c', 'Not Found — nicht gefunden'], ['422', '#fb923c', 'Unprocessable — Validierung'], ] as [$code, $color, $desc])
{{ $code }} {{ $desc }}
@endforeach