Settings & Admin API¶
Endpoints for organisation settings, onboarding, security configuration, audit logging, data management, and utility functions.
Organisation Settings¶
Notification settings moved
GET and PUT /api/settings/notifications/ were removed. The
single org-level notification record they served no longer exists.
Delivery destinations are now individual channel records at
/api/notification/incident-channels/, and
which incidents reach which destination is decided by
/api/notification/routing-rules/.
This mirrors the Grafana contact-point / notification-policy split. See Delivery Channels for the concepts.
Test Notification Webhook¶
Sends a test payload to a webhook URL so you can verify delivery before saving it as a channel. This is the one endpoint from the old notification-settings group that survives.
Request body:
| Field | Type | Description |
|---|---|---|
webhook_type |
string | slack or teams. |
webhook_url |
string | The incoming-webhook URL to test. |
Requires an admin role. The URL is not persisted — pass it here to validate it, then create the channel with it.
Get AI Settings¶
Returns the organisation-level AI configuration (enabled models, default provider).
List AI Providers¶
Returns all configured AI providers for the organisation.
Add AI Provider¶
Request body:
Stores the API key encrypted at rest (Fernet). Once created, the key is never returned by the API.
Get AI Provider Detail¶
Update AI Provider¶
Request body (partial update):
Send api_key only if you want to rotate the key. Omit to keep the current value.
Delete AI Provider¶
Removes the provider from the organisation. The provider's API key is deleted; other providers remain unaffected.
Get Available AI Models¶
Returns AI models available for the current user's organisation. Only providers that are both system-wide active and have an API key configured for the organisation (or an environment variable fallback) are included. Returns an empty list if no models are available.
Response:
Test AI Provider¶
Tests connectivity to a specific AI provider.
Get Issue Settings¶
Returns the organisation-level issue settings (deduplication, muting, auto-resolution).
Update Issue Settings¶
Get Sentinel Config¶
Returns the organisation's Sentinel configuration. Creates default config on first access.
Response:
{
"id": 1,
"active_mode": false,
"error_spike_multiplier": 0,
"z_score_threshold": 0,
"max_quiet_batches": 12,
"updated_at": "2026-02-19T22:00:00Z"
}
| Field | Type | Description |
|---|---|---|
active_mode |
boolean | true = quiet batches skip AI, false = shadow mode |
error_spike_multiplier |
float | Override for error spike detection (0 = use default 2.0) |
z_score_threshold |
float | Override for anomaly z-score (0 = use default 3.0) |
max_quiet_batches |
integer | Force AI after this many consecutive quiet batches |
Update Sentinel Config¶
Request body (partial update supported):
Response: Updated config object (same shape as GET).
Admin Only
Both Sentinel endpoints require admin role.
SMTP configuration is env-only
SerOps configures SMTP through environment variables (EMAIL_HOST etc.). There is no /api/settings/mail/ endpoint — the previous UI-editable mail settings were removed 2026-09-01. See Email / SMTP for the env var reference. Verify with python manage.py check_smtp <recipient>.
List API Keys¶
Returns the API keys configured for external integrations. Keys themselves are never returned — only the provider ID and a masked hint.
Create or Rotate an API Key¶
Request body:
Stores the key encrypted at rest. Reusing the same provider_id overwrites the previous value (used for rotation).
Delete an API Key¶
Removes the stored key for the specified provider.
Organisations¶
Get Organisation Info¶
Create Organisation¶
Request body:
Update Organisation¶
Request body:
Delete Organisation¶
List Team Members¶
Invite Team Member¶
Request body:
Sends an invitation email to the specified address and creates a pending user account.
Update Team Member¶
Request body:
Updates the team member's profile and/or role. Only fields included in the request body are changed.
Remove Team Member¶
Public Organisation List¶
Returns a minimal public list of organisation names (id + display name only). Used by the login / invitation flow so users can pick the right organisation before entering credentials. Does not require authentication and never exposes internal fields.
Onboarding¶
Get Onboarding Status¶
Returns the current onboarding progress for the organisation.
There is no endpoint to mark a step complete
/onboarding/status/ is GET-only. Onboarding progress is
computed from real database state on every read — a step counts as
done when the thing it asks for actually exists.
Earlier releases had a self-attested checklist where the client
PUT a step as complete. That let a wizard report 100% on an
organisation where nothing had been configured, so it was replaced
by computed state. To advance onboarding, perform the underlying
action (add an API key, connect an integration, create a project)
and re-read the status.
POST /onboarding/skip/, /resume/, and /reset/ remain, since
those express user intent rather than claiming completion.
Skip Onboarding¶
Marks the onboarding flow as skipped. The user can resume later.
Reset Onboarding¶
Resets the onboarding flow back to the first step.
Security Settings¶
Get / Update Security Settings¶
Audit Log¶
List Audit Log Entries¶
Query parameters:
| Parameter | Description |
|---|---|
action |
Filter by action type (LOGIN, SETTINGS_CHANGE, etc.) |
user |
Filter by user |
start_date |
Start of date range |
end_date |
End of date range |
Export Audit Log¶
Returns a CSV or JSON export of audit entries.
Data Management¶
Data Usage¶
Returns storage usage statistics for the organisation.
Retention Policy¶
Response includes:
| Field | Type | Description |
|---|---|---|
batch_generation_interval |
int | Current batch interval in minutes (5–720) |
batch_interval_choices |
object | Valid interval options ({5: "5 minutes", ..., 720: "12 hours"}) |
auto_cleanup_enabled |
bool | Whether auto-cleanup is active |
retention_days |
int | Batch retention period |
cleanup_frequency |
string | daily, weekly, or monthly |
Request body (PUT):
All fields are optional — include only the ones you want to change.
{
"batch_generation_interval": 10,
"auto_cleanup_enabled": true,
"retention_days": 30,
"cleanup_frequency": "daily"
}
Delete Old Batches¶
Triggers manual cleanup of batches older than the configured retention period.
Utilities¶
Scan Message¶
Request body:
Response:
Scans a message for sensitive data (API keys, passwords, tokens) without storing it.
Related¶
- Authentication -- Login, SSO, and password management
- Notifications -- User-level notification preferences
- AI & Chat -- AI admin endpoints for provider health
- API Overview -- Base URL, response format, and error codes