Loading…
Loading…
A technical reference for the administrative API endpoints used to manage system-wide settings, F5 integration, permissions, and installation profiles.
The Settings API provides a collection of administrative endpoints for managing the platform's system-wide configuration. It is the primary interface for operators to view and modify settings related to installation profiles, authentication modes, F5 integration, Identity-Aware Proxy (IAP) access, permission bindings, and software update channels.
This API is designed for programmatic and UI-driven administration. It centralizes configuration management, provides tools for integrating with external systems like F5 BIG-IP, and reports on system status. All write operations are audited, recording the actor, their role, and the changes made.
Key capabilities include:
The Settings API is implemented as a set of REST endpoints within the administration service. Different endpoints handle specific domains of configuration, but the core logic for general settings resides in the PATCH /admin/v1/settings endpoint.
When an API consumer sends a PATCH /admin/v1/settings request, the system performs the following sequence of operations:
f5_* settings are modified, related fields like f5_discovery_mode and f5_ingest_enabled are automatically populated to ensure a consistent state.install_profile: The installation profile cache is invalidated immediately, ensuring UI elements and feature gates reflect the change without delay.update_channel: If the update channel is explicitly changed by an operator, a marker is set to prevent a future license-based backfill from overwriting the operator's choice.update_* keys: Any change to a key starting with update_ invalidates the update channel status cache. This ensures the UI reflects the new update settings immediately after saving.request_validation_* or response_validation_* keys: A log entry is generated to inform operators that global validation defaults have changed. Downstream services that cache this configuration will pick up the new settings after their cache TTL expires (typically 15 seconds).iap_access_members: The list of members is persisted to the Identity Provider (IdP) configuration and synchronized with the underlying IAP access policy.The F5 integration endpoints (/admin/v1/settings/f5/*) allow interaction with an F5 BIG-IP device. When calling these endpoints, you can either rely on the F5 credentials already saved in the system settings or provide them directly in the request body.
The system uses a specific resolution logic (resolveF5Settings):
managementUrl, partition, policyName, username), the value from the request body is preferred.f5_management_url).WARNING
To protect credentials, the system will reject a request that changes the F5 managementUrl or username without also providing the password in the same request. This prevents a stored password from being inadvertently sent to a new target.
The platform can ingest traffic logs from an F5 device to learn about API activity. This typically involves a log relay.
flowchart TD
A[F5 Device] -- Syslog --> B[Log Relay Target]
B -- HTTPS --> C[Platform Ingest Endpoint]f5_log_receiver_address setting or the S2R_DISCOVERY_INGEST_LOG_RELAY_TARGET environment variable./ingest/v1/f5/traffic), which is derived from the f5_ingest_public_url setting or the request's origin.The POST /admin/v1/settings/f5/log-forwarding/apply endpoint automates the F5 configuration for this process.
Retrieves a map of all effective system settings.
GET /admin/v1/settingsApplies a partial update to the system settings. Only the keys provided in the request body are modified.
PATCH /admin/v1/settingsiap_access_members succeeds but the subsequent persistence or sync fails, the response body will contain a _iapPersistWarning or _iapSyncWarning field with an error message.400 Bad Request (S2R-VAL-0401): If the request is invalid (e.g., invalid value for a setting, or changing a credentialed target without re-supplying the secret).502 Bad Gateway (S2R-ADM-0502): If an internal error occurs during processing.Returns the current installation profile and related feature flags. This is used by the UI to show or hide components, such as those specific to F5 integration.
Endpoint: GET /admin/v1/settings/install-profile
Response Body:
{
"profile": "f5_modernization",
"f5Enabled": true,
"isF5Modernization": true,
"isGenericSoapToRest": false,
"isBoth": false,
"f5Configured": true,
"deploymentMode": "byoc",
"isSaas": false
}
Response Fields
| Field | Type | Description |
|---|---|---|
profile | String | The name of the current installation profile. One of f5_modernization, generic_soap_to_rest, or both. |
f5Enabled | Boolean | Whether the current profile enables F5-related features. |
isF5Modernization | Boolean | true if profile is f5_modernization. |
isGenericSoapToRest | Boolean | true if profile is generic_soap_to_rest. |
isBoth | Boolean | true if profile is both. |
f5Configured | Boolean | true if an F5 connector instance is actively configured, regardless of the installation profile. UI elements for F5 should only be shown if this is true. |
deploymentMode | String | The deployment mode. Either saas for a multi-tenant SaaS environment or byoc (Bring Your Own Cloud) for a self-managed instance. |
isSaas | Boolean | true if deploymentMode is saas. UI surfaces irrelevant to SaaS (e.g., infrastructure capacity panels) may be hidden. |
Returns the current authentication mode of the platform.
GET /admin/v1/settings/auth-mode| Field | Type | Description |
|---|---|---|
mode | String | The current mode: pristine or protected. |
isPristine | Boolean | true if the mode is pristine. |
isProtected | Boolean | true if the mode is protected. |
description | String | A human-readable description of the current mode. In pristine mode, the next user to log in becomes an admin. In protected mode, RBAC is fully enforced. |
NOTE
The authentication mode is a one-way toggle from pristine to protected. It cannot be changed via the Settings API.
Returns the synchronization status of the Identity-Aware Proxy (IAP) access list.
GET /admin/v1/settings/iap-status| Field | Type | Description |
|---|---|---|
currentMembers | Array<String> | The list of member emails currently enforced by the IAP policy. |
savedMembers | Array<String> | The list of member emails from the persisted configuration. This is read from the IdP configuration table, falling back to the legacy iap_access_members system setting only if the IdP row does not exist. |
synced | Boolean | true if currentMembers and savedMembers contain the same set of members. |
Retrieves a list of recently sent alert emails.
GET /admin/v1/settings/alert-mail-history| Name | Type | Default | Description |
|---|---|---|---|
limit | Integer | 100 | The maximum number of history records to return. |
The following endpoints interact with an F5 BIG-IP device. For each endpoint, the request body is optional. If provided, its values override the saved system settings for the duration of the call.
Request Body (F5Request)
| Field | Type | Required | Description |
|---|---|---|---|
managementUrl | String | No | The URL of the F5 BIG-IP management interface. |
partition | String | No | The F5 partition to operate on. Defaults to Common. |
policyName | String | No | The name of the F5 policy to scan or interact with. |
username | String | No | The username for authenticating to the F5 management interface. |
password | String | No | The password for the user. Required if managementUrl or username is provided and differs from the stored configuration. |
tlsInsecure | Boolean | No | If true, TLS certificate validation is skipped when connecting to the F5 device. Defaults to the value of the f5_tls_insecure setting. |
Tests the connection and authentication to the F5 BIG-IP management interface.
POST /admin/v1/settings/f5/test-connectionoverallStatus field.Scans a specified F5 policy to discover its configuration.
POST /admin/v1/settings/f5/scanoverallStatus field.Probes an F5 policy's virtual servers to identify potential WSDL endpoints.
POST /admin/v1/settings/f5/wsdl-probe| Name | Type | Default | Description |
|---|---|---|---|
limit | Integer | 20 | The maximum number of candidates to probe. |
overallStatus field.Generates a preview of the configuration changes required to set up log forwarding on the F5 device.
POST /admin/v1/settings/f5/log-forwarding/previewF5LogForwardingRequest (see table below).overallStatus field.Applies the configuration to the F5 device to enable log forwarding to the platform's ingest endpoint.
POST /admin/v1/settings/f5/log-forwarding/applyF5LogForwardingRequest (see table below).overallStatus field.Request Body (F5LogForwardingRequest)
This request body includes all fields from F5Request plus the following:
| Field | Type | Required | Description |
|---|---|---|---|
profileName | String | No | The name of the log profile to create or modify on the F5 device. |
servers | String | No | A comma, semicolon, or newline-separated list of log server targets (e.g., host:port). Overrides the configured f5_log_receiver_address. |
protocol | String | No | The protocol for log forwarding (e.g., tcp). The system may infer this based on standard ports if not provided. |
responseLogging | String | No | The response logging mode. Defaults to all. |
Retrieves a summary of API traffic learned from F5 logs.
GET /admin/v1/settings/f5/learning-summary| Name | Type | Default | Description |
|---|---|---|---|
limit | Integer | 10 | The maximum number of top consumers/services to return. |
lite | Boolean | false | If true, returns a lightweight summary suitable for dashboards, omitting computationally expensive aggregations like topServices and serviceActivity. The lightweight version is significantly faster and should be used where only top consumer data or basic stats are needed. |
Provides a detailed status of the F5 log ingestion configuration and state.
GET /admin/v1/settings/f5/ingest-statusenabled, ingestEnabled, receiverAddress, publicIngestUrl, lastLearnedAt, and lastTrafficAt.Returns default and dynamically-derived values for F5 configuration, such as the public ingest URL.
GET /admin/v1/settings/f5/defaultspublicIngestUrl, receiverAddress, and transportProtocol.Retrieves all active principal-to-role bindings.
GET /admin/v1/permission-bindingsCreates a new permission binding or updates an existing one for a given principal (email) and role.
POST /admin/v1/permission-bindings| Field | Type | Required | Description |
|---|---|---|---|
email | String | Yes | The email address of the principal. |
role | String | Yes | The key of the role to assign. |
400 Bad Request (S2R-VAL-0401): If the request is invalid (e.g., missing fields, invalid role).Removes a permission binding by its unique ID.
DELETE /admin/v1/permission-bindings/{bindingId}| Name | Type | Description |
|---|---|---|
bindingId | UUID | The unique identifier of the binding to delete. |
Response Body:
{
"deleted": true,
"bindingId": "..."
}
Error Responses:
400 Bad Request (S2R-VAL-0401): If the bindingId does not correspond to an existing binding.The following system setting keys are referenced in the controller and can be managed via the PATCH /admin/v1/settings endpoint.
| Setting Key | Description
| install_profile | The installation profile (f5_modernization, generic_soap_to_rest, both). Changing this invalidates a cache to immediately reflect the change.
| update_channel | The software update channel (internal, beta, early-access, release). An operator can set any valid channel. Changing this value prevents it from being overwritten by a license-based default.
| update_* | Any setting prefixed with update_ (e.g., update_mode, update_window). Changing any of these invalidates the update status cache.
| request_validation_* | Global defaults for request validation. Changing these logs a message about a 15-second cache propagation delay for runtime routes.
| response_validation_* | Global defaults for response validation. Changing these logs a message about a 15-second cache propagation delay for runtime routes.
| iap_access_members | A string containing a list of member emails for IAP access. The system parses this list and persists it to the IdP configuration.
| f5_management_url | The URL of the F5 BIG-IP management interface.
| f5_password | The password for the F5 management user. This is a write-only secret.
| f5_username | The username for the F5 management interface.
| alert_smtp_* | Settings for the SMTP server used to send email alerts, including alert_smtp_host, alert_smtp_port, alert_smtp_username, and alert_smtp_password. Subject to the same credential guard as F5 settings.
400 Bad Request with error code S2R-VAL-0401:
f5_management_url, alert_smtp_host) without re-supplying the corresponding password in the PATCH /admin/v1/settings request.502 Bad Gateway with error code S2R-ADM-0502:
When updating settings via PATCH /admin/v1/settings, the core settings may be saved successfully, but a subsequent side effect might fail. In these cases, the API returns a 200 OK response with a warning field in the body.
_iapPersistWarning: The iap_access_members setting was saved, but writing the member list to the IdP configuration table failed._iapSyncWarning: The iap_access_members setting was saved, but synchronizing the new list with the IAP policy failed.In both cases, the system state may be inconsistent. The saved setting and the active policy may not match.
When you modify global API validation defaults (settings prefixed with request_validation_ or response_validation_), the changes are not instantaneous across all runtime instances. These settings are cached by downstream services.
S2R-ADM-cache-invalidation) is generated when these settings are changed to help operators correlate the change with this settling period.