-
-
Notifications
You must be signed in to change notification settings - Fork 24
API Sysconfig
Part of the Panopticon JSON API. Back to overview.md.
The Sysconfig endpoints expose Panopticon's own application configuration
(config.php / .env keys). They are the API counterpart of the
System ▸ System Configuration screen.
All Sysconfig endpoints require an authenticated super-user. Non-super tokens
receive 403 auth.forbidden.
A subset of configuration keys is classified as sensitive and treated specially:
| Key | Reason |
|---|---|
dbpass |
Database password. |
secret |
The application secret used for HMAC / signing. |
smtpuser |
SMTP authentication username. |
smtppass |
SMTP authentication password. |
caching_redis_dsn |
May embed credentials. |
caching_memcached_dsn |
May embed credentials. |
webcron_key |
Authentication token for web-cron callbacks. |
captcha_recaptcha_secret_key |
Captcha provider secret. |
captcha_hcaptcha_secret_key |
Captcha provider secret. |
Sensitive keys are completely omitted from the list response (GET /v1/sysconfig)
and yield 404 sysconfig.unknown_param from the single-get endpoint
(GET /v1/sysconfig/{paramName}) so their existence is not signalled. They are also
write-blocked on POST /v1/sysconfig/{paramName} — even for super-users — with
403 auth.forbidden.
This is the one place the master plan's "no redaction" rule does not apply: sysconfig is application-level secrets, not per-site config, and the legacy UI already gates these keys behind super-user editing. The API matches that.
List every non-sensitive sysconfig key.
GET /api/v1/sysconfig HTTP/1.1
Authorization: Bearer ...Response (truncated):
{
"success": true,
"data": {
"timezone": "UTC",
"debug": false,
"session_timeout": 1440,
"max_execution": 60
}
}| Status | Code | Notes |
|---|---|---|
| 200 | — | Success. |
| 401 | auth.invalid_token |
Missing/invalid token. |
| 403 | auth.forbidden |
Not a super-user. |
Read a single non-sensitive key. Sensitive or unknown keys both return
404 sysconfig.unknown_param so a caller cannot probe which sensitive keys exist.
GET /api/v1/sysconfig/timezone HTTP/1.1{ "success": true, "data": { "timezone": "UTC" } }| Status | Code | Notes |
|---|---|---|
| 200 | — | Success. |
| 400 | validation.bad_request |
paramName missing/empty. |
| 401 | auth.invalid_token |
|
| 403 | auth.forbidden |
Not a super-user. |
| 404 | sysconfig.unknown_param |
Unknown OR sensitive key. |
Set a single non-sensitive key. Body: { "value": ... }. The value is validated by
Model\Sysconfig::validateValue(); rejected values return
422 sysconfig.invalid_value.
POST /api/v1/sysconfig/debug HTTP/1.1
Content-Type: application/json
{ "value": true }{ "success": true, "data": { "debug": true } }| Status | Code | Notes |
|---|---|---|
| 200 | — | Updated; response carries the post-filter value. |
| 400 | validation.bad_request |
Missing paramName or missing value field. |
| 401 | auth.invalid_token |
|
| 403 | auth.forbidden |
Not a super-user, OR a sensitive key was targeted. |
| 404 | sysconfig.unknown_param |
Unknown key. |
| 422 | sysconfig.invalid_value |
Value rejected by validation. |
Successful writes emit an audit event sysconfig.set with details: {"param": name}.
The new value is never logged — it could itself be a credential.
| Event | Triggered by |
|---|---|
sysconfig.set |
Successful POST /v1/sysconfig/{paramName}. |
- Happy path for
set(togglingdebug) is skipped at integration level because it writes toconfig.php; the403/404/422failure paths are covered instead.
- overview.md — cross-cutting concerns (auth, envelope, error codes).
-
../openapi.yaml— machine-readable OpenAPI 3.1 specification.
Documentation Copyright ©2023–2025 Akeeba Ltd.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
You can also obtain a copy of the GNU Free Documentation License from the Free Software Foundation
- Overview pages
- Working with sites
- Site Overview
- Backup Management with Akeeba Backup Pro
- Security Management with Admin Tools Pro
- Core File Integrity Check
- Scheduled Update Summary
- Scheduled Action Summary
- Backup Tasks
- Scanner Tasks
- System Configuration
- Managing Sites
- Mail templates
- Web Push Notifications
- Legal Policies
- Users and Groups
- Tasks
- Log files
- Update Panopticon
- Database Backups
- Fixing your session save path
- The .htaccess file
- Advanced Customisation (user code)
- Plugins
- Custom CSS
- Custom Templates
- Advanced Permissions
- .env For Configuration
- API Overview
- Sites endpoints
- Stats & Site Status endpoints
- System configuration endpoints
- Tasks endpoints
- Self-update endpoints