Portal API
Self-Service-API für die Verwaltung von Keys, Providern und Einstellungen.
Portal-Endpunkte sind nur im Managed/Cloud-Modus verfuegbar. Fuer Self-Hosted-Standalone-Deployments konfigurieren Sie Einstellungen ueber Umgebungsvariablen.
Authentifizierung
Portal-Endpunkte erfordern ein gueltiges JWT-Access-Token. Erhalten Sie Tokens ueber den Login-Flow und fuegen Sie das Access-Token im Authorization-Header für alle Portal-Anfragen ein.
Basispfad: /portal
POST /auth/login
Authentifizierung mit E-Mail und Passwort. Gibt ein Access-Token (15 Minuten Gueltigkeit) und ein Refresh-Token (7 Tage Gueltigkeit) zurueck.
# Anmeldung mit E-Mail und Passwort
curl -X POST https://api.noirdoc.de/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "benutzer@example.com",
"password": "ihr-passwort"
}'
Antwort:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"refresh_token": "dGhpcyBpcyBhIHJlZnJl..."
}
POST /auth/refresh
Tauschen Sie ein gueltiges Refresh-Token gegen ein neues Access-Token, wenn das aktuelle abgelaufen ist.
# Access-Token erneuern
curl -X POST https://api.noirdoc.de/auth/refresh \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "dGhpcyBpcyBhIHJlZnJl..."
}'
Antwort:
{
"access_token": "eyJhbGciOiJIUzI1NiIs..."
}
POST /auth/logout
Invalidiert das aktuelle Refresh-Token. Das Access-Token bleibt gueltig, bis es natuerlich ablaeuft.
# Abmeldung und Token-Invalidierung
curl -X POST https://api.noirdoc.de/auth/logout \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Access-Token verwenden
Fuegen Sie das Access-Token im Authorization-Header für alle nachfolgenden Portal-Anfragen ein:
Authorization: Bearer <access_token>
API-Keys
GET /portal/keys
Listet alle Proxy-API-Keys für den aktuellen Tenant auf.
# Alle API-Keys auflisten
curl https://api.noirdoc.de/portal/keys \
-H "Authorization: Bearer <access_token>"
Antwort:
[
{
"id": "key_abc123",
"label": "produktion",
"prefix": "px-a1b2",
"created_at": "2025-09-15T10:30:00Z",
"is_active": true
},
{
"id": "key_def456",
"label": "staging",
"prefix": "px-c3d4",
"created_at": "2025-10-01T08:00:00Z",
"is_active": true
}
]
POST /portal/keys
Erstellt einen neuen Proxy-API-Key. Der vollstaendige Key-Wert wird nur einmal in der Antwort zurueckgegeben — speichern Sie ihn sicher ab.
# Neuen API-Key erstellen
curl -X POST https://api.noirdoc.de/portal/keys \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{"label": "neuer-service-key"}'
Request Body:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
label | string | Ja | Ein lesbares Label für den Key |
Antwort:
{
"id": "key_ghi789",
"label": "neuer-service-key",
"key": "px-vollstaendiger-key-wert-nur-einmal-sichtbar",
"created_at": "2025-11-20T14:00:00Z"
}
PATCH /portal/keys/{id}
Aktualisiert die Eigenschaften eines Keys, z.B. sein Label.
# Key-Label aktualisieren
curl -X PATCH https://api.noirdoc.de/portal/keys/key_abc123 \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{"label": "umbenannter-key"}'
DELETE /portal/keys/{id}
Soft-Delete eines Keys. Der Key wird deaktiviert und kann nicht mehr für Proxy-Anfragen verwendet werden. Er kann spaeter reaktiviert werden.
# API-Key deaktivieren
curl -X DELETE https://api.noirdoc.de/portal/keys/key_abc123 \
-H "Authorization: Bearer <access_token>"
POST /portal/keys/{id}/reactivate
Reaktiviert einen zuvor geloeschten Key.
# Deaktivierten Key reaktivieren
curl -X POST https://api.noirdoc.de/portal/keys/key_abc123/reactivate \
-H "Authorization: Bearer <access_token>"
Provider
GET /portal/providers
Listet alle konfigurierten LLM-Provider für den aktuellen Tenant auf.
# Alle Provider auflisten
curl https://api.noirdoc.de/portal/providers \
-H "Authorization: Bearer <access_token>"
Antwort:
[
{
"provider": "openai",
"provider_type": "openai",
"base_url": "https://api.openai.com/v1",
"has_api_key": true
}
]
PUT /portal/providers/{provider}
Konfiguriert oder aktualisiert einen Provider. Setzt den API-Key und die Verbindungsdetails, die Noirdoc bei der Weiterleitung von Anfragen an diesen Provider verwendet.
# OpenAI-Provider konfigurieren
curl -X PUT https://api.noirdoc.de/portal/providers/openai \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk-ihr-openai-key",
"provider_type": "openai"
}'
Request Body:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
api_key | string | Ja | Der API-Key des Providers |
base_url | string | Nein | Benutzerdefinierte Base-URL (für Azure oder selbst gehostete Modelle) |
api_version | string | Nein | API-Version (für Azure OpenAI) |
provider_type | string | Ja | Provider-Typ: openai, anthropic, azure, openrouter |
DELETE /portal/providers/{provider}
Entfernt eine Provider-Konfiguration. Proxy-Anfragen, die diesen Provider benoetigen, schlagen fehl, bis er neu konfiguriert wird.
# Provider-Konfiguration entfernen
curl -X DELETE https://api.noirdoc.de/portal/providers/openai \
-H "Authorization: Bearer <access_token>"
Einstellungen
GET /portal/settings
Ruft die aktuellen Tenant-Einstellungen ab, einschliesslich Pseudonymisierungsverhalten, Mapping-TTL, Dateiverarbeitungsmodus und mehr.
# Aktuelle Einstellungen abrufen
curl https://api.noirdoc.de/portal/settings \
-H "Authorization: Bearer <access_token>"
PATCH /portal/settings
Aktualisiert eine oder mehrere Einstellungen. Senden Sie nur die Felder, die Sie aendern moechten.
# Einstellungen aktualisieren
curl -X PATCH https://api.noirdoc.de/portal/settings \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"mapping_ttl_days": 14,
"file_handling": "block"
}'
Nutzung und Audit-Logs
GET /portal/usage
Ruft Nutzungsstatistiken für den aktuellen Tenant ab, einschliesslich Anfragezahlen und Token-Nutzung.
# Nutzungsstatistiken abrufen
curl https://api.noirdoc.de/portal/usage \
-H "Authorization: Bearer <access_token>"
GET /portal/audit-logs
Ruft Audit-Logs für den aktuellen Tenant ab. Unterstützt Filterung nach Zeitraum und Eventtyp ueber Query-Parameter.
# Audit-Logs für einen Zeitraum abrufen
curl "https://api.noirdoc.de/portal/audit-logs?from=2025-11-01&to=2025-11-30" \
-H "Authorization: Bearer <access_token>"
Fehlerantworten
Portal-Endpunkte geben Standard-HTTP-Fehlercodes zurueck:
| Status | Bedeutung |
|---|---|
401 | Fehlendes oder ungueltiges JWT-Token |
403 | Unzureichende Berechtigungen |
404 | Ressource nicht gefunden |
422 | Validierungsfehler — pruefen Sie den Request Body |