Skip to content

AppSettingsManager

Application Settings Manager

Manages high-level application settings with a structured API. Provides type-safe access to authentication, features, email, and security settings.

const settings = client.admin.settings.app
// Get all app settings
const appSettings = await settings.get()
console.log(appSettings.authentication.enable_signup)
// Update specific settings
const updated = await settings.update({
authentication: {
enable_signup: true,
password_min_length: 12
}
})

new AppSettingsManager(fetch): AppSettingsManager

Parameter Type
fetch FluxbaseFetch

AppSettingsManager

configureMailgun(apiKey, domain, options?): Promise<AppSettings>

Configure Mailgun email provider

Convenience method to set up Mailgun email delivery.

Parameter Type Description
apiKey string Mailgun API key
domain string Mailgun domain
options? { eu_region?: boolean; from_address?: string; from_name?: string; reply_to_address?: string; } Optional EU region flag and email addresses
options.eu_region? boolean -
options.from_address? string -
options.from_name? string -
options.reply_to_address? string -

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.configureMailgun('key-xxx', 'mg.yourapp.com', {
eu_region: false,
from_address: 'noreply@yourapp.com',
from_name: 'Your App'
})

configureSendGrid(apiKey, options?): Promise<AppSettings>

Configure SendGrid email provider

Convenience method to set up SendGrid email delivery.

Parameter Type Description
apiKey string SendGrid API key
options? { from_address?: string; from_name?: string; reply_to_address?: string; } Optional from address, name, and reply-to
options.from_address? string -
options.from_name? string -
options.reply_to_address? string -

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.configureSendGrid('SG.xxx', {
from_address: 'noreply@yourapp.com',
from_name: 'Your App'
})

configureSES(accessKeyId, secretAccessKey, region, options?): Promise<AppSettings>

Configure AWS SES email provider

Convenience method to set up AWS SES email delivery.

Parameter Type Description
accessKeyId string AWS access key ID
secretAccessKey string AWS secret access key
region string AWS region (e.g., ‘us-east-1’)
options? { from_address?: string; from_name?: string; reply_to_address?: string; } Optional email addresses
options.from_address? string -
options.from_name? string -
options.reply_to_address? string -

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.configureSES(
'AKIAIOSFODNN7EXAMPLE',
'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
'us-east-1',
{
from_address: 'noreply@yourapp.com',
from_name: 'Your App'
}
)

configureSMTP(config): Promise<AppSettings>

Configure SMTP email provider

Convenience method to set up SMTP email delivery.

Parameter Type Description
config { from_address?: string; from_name?: string; host: string; password: string; port: number; reply_to_address?: string; use_tls: boolean; username: string; } SMTP configuration
config.from_address? string -
config.from_name? string -
config.host string -
config.password string -
config.port number -
config.reply_to_address? string -
config.use_tls boolean -
config.username string -

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.configureSMTP({
host: 'smtp.gmail.com',
port: 587,
username: 'your-email@gmail.com',
password: 'your-app-password',
use_tls: true,
from_address: 'noreply@yourapp.com',
from_name: 'Your App'
})

deleteSecretSetting(key): Promise<void>

Delete a system secret setting

Parameter Type Description
key string Secret key to delete

Promise<void>

Promise

await client.admin.settings.app.deleteSecretSetting('stripe_api_key')

deleteSetting(key): Promise<void>

Delete a custom setting

Parameter Type Description
key string Setting key to delete

Promise<void>

Promise

await client.admin.settings.app.deleteSetting('billing.tiers')

disableSignup(): Promise<AppSettings>

Disable user signup

Convenience method to disable user registration.

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.disableSignup()

enableSignup(): Promise<AppSettings>

Enable user signup

Convenience method to enable user registration.

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.enableSignup()

get(): Promise<AppSettings>

Get all application settings

Returns structured settings for authentication, features, email, and security.

Promise<AppSettings>

Promise resolving to AppSettings

const settings = await client.admin.settings.app.get()
console.log('Signup enabled:', settings.authentication.enable_signup)
console.log('Realtime enabled:', settings.features.enable_realtime)
console.log('Email provider:', settings.email.provider)

getSecretSetting(key): Promise<SecretSettingMetadata>

Get metadata for a system secret setting (never returns the value)

Parameter Type Description
key string Secret key

Promise<SecretSettingMetadata>

Promise resolving to SecretSettingMetadata

const metadata = await client.admin.settings.app.getSecretSetting('stripe_api_key')
console.log(metadata.key, metadata.updated_at)
// Note: metadata.value is never included

getSetting(key): Promise<any>

Get a specific custom setting’s value only (without metadata)

Convenience method that returns just the value field instead of the full CustomSetting object.

Parameter Type Description
key string Setting key (e.g., ‘billing.tiers’, ‘features.beta_enabled’)

Promise<any>

Promise resolving to the setting’s value

const tiers = await client.admin.settings.app.getSetting('billing.tiers')
console.log(tiers) // { free: 1000, pro: 10000, enterprise: 100000 }

getSettings(keys): Promise<Record<string, any>>

Get multiple custom settings’ values by keys

Fetches multiple settings in a single request and returns only their values.

Parameter Type Description
keys string[] Array of setting keys to fetch

Promise<Record<string, any>>

Promise resolving to object mapping keys to values

const values = await client.admin.settings.app.getSettings([
'billing.tiers',
'features.beta_enabled'
])
console.log(values)
// {
// 'billing.tiers': { free: 1000, pro: 10000 },
// 'features.beta_enabled': { enabled: true }
// }

getUserSecretValue(userId, key): Promise<string>

Get the decrypted value of a user’s secret setting

This is a privileged operation that requires service_role. Use this to retrieve user-specific secrets when running as a service (e.g., in edge functions or background jobs).

Parameter Type Description
userId string The user ID whose secret to retrieve
key string Secret key

Promise<string>

Promise resolving to the decrypted secret value

// In an edge function, get a user's API key for validation
const apiKey = await fluxbaseService.admin.settings.app.getUserSecretValue(
userId,
'owntracks_api_key'
)
if (apiKey !== providedKey) {
throw new Error('Invalid API key')
}

listSecretSettings(): Promise<SecretSettingMetadata[]>

List all system secret settings (metadata only, never includes values)

Promise<SecretSettingMetadata[]>

Promise resolving to array of SecretSettingMetadata

const secrets = await client.admin.settings.app.listSecretSettings()
secrets.forEach(s => console.log(s.key, s.description))

listSettings(): Promise<CustomSetting[]>

List all custom settings

Promise<CustomSetting[]>

Promise resolving to array of CustomSetting objects

const settings = await client.admin.settings.app.listSettings()
settings.forEach(s => console.log(s.key, s.value))

reset(): Promise<AppSettings>

Reset all application settings to their default values

Promise<AppSettings>

Promise resolving to the default app settings


setEmailEnabled(enabled): Promise<AppSettings>

Enable or disable email functionality

Convenience method to toggle email system on/off.

Parameter Type Description
enabled boolean Whether to enable email

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.setEmailEnabled(true)

setEmailVerificationRequired(required): Promise<AppSettings>

Enable or disable email verification requirement

Convenience method to require email verification for new signups.

Parameter Type Description
required boolean Whether to require email verification

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.setEmailVerificationRequired(true)

setFeature(feature, enabled): Promise<AppSettings>

Enable or disable a feature

Convenience method to toggle feature flags.

Parameter Type Description
feature "functions" | "realtime" | "storage" Feature name (‘realtime’
enabled boolean Whether to enable or disable the feature

Promise<AppSettings>

Promise resolving to AppSettings

// Enable realtime
await client.admin.settings.app.setFeature('realtime', true)
// Disable storage
await client.admin.settings.app.setFeature('storage', false)

setPasswordComplexity(requirements): Promise<AppSettings>

Configure password complexity requirements

Convenience method to set password validation rules.

Parameter Type Description
requirements { min_length?: number; require_lowercase?: boolean; require_number?: boolean; require_special?: boolean; require_uppercase?: boolean; } Password complexity requirements
requirements.min_length? number -
requirements.require_lowercase? boolean -
requirements.require_number? boolean -
requirements.require_special? boolean -
requirements.require_uppercase? boolean -

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.setPasswordComplexity({
min_length: 12,
require_uppercase: true,
require_lowercase: true,
require_number: true,
require_special: true
})

setPasswordMinLength(length): Promise<AppSettings>

Update password minimum length

Convenience method to set password requirements.

Parameter Type Description
length number Minimum password length (8-128 characters)

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.setPasswordMinLength(12)

setRateLimiting(enabled): Promise<AppSettings>

Enable or disable global rate limiting

Convenience method to toggle global rate limiting.

Parameter Type Description
enabled boolean Whether to enable rate limiting

Promise<AppSettings>

Promise resolving to AppSettings

await client.admin.settings.app.setRateLimiting(true)

setSecretSetting(key, value, options?): Promise<SecretSettingMetadata>

Set a system-level secret setting (encrypted)

Creates or updates an encrypted system secret. The value is encrypted server-side and can only be accessed by edge functions, background jobs, or custom handlers. The SDK never returns the decrypted value.

Parameter Type Description
key string Secret key
value string Secret value (will be encrypted server-side)
options? { description?: string; } Optional description
options.description? string -

Promise<SecretSettingMetadata>

Promise resolving to SecretSettingMetadata (never includes the value)

await client.admin.settings.app.setSecretSetting('stripe_api_key', 'sk-live-xxx', {
description: 'Stripe API key for payment processing'
})

setSessionSettings(timeoutMinutes, maxSessionsPerUser): Promise<AppSettings>

Configure session settings

Convenience method to set session timeout and limits.

Parameter Type Description
timeoutMinutes number Session timeout in minutes (0 for no timeout)
maxSessionsPerUser number Maximum concurrent sessions per user (0 for unlimited)

Promise<AppSettings>

Promise resolving to AppSettings

// 30 minute sessions, max 3 devices per user
await client.admin.settings.app.setSessionSettings(30, 3)

setSetting(key, value, options?): Promise<CustomSetting>

Set or create a custom setting

Creates a new custom setting or updates an existing one.

Parameter Type Description
key string Setting key
value any Setting value (any JSON-serializable value)
options? { description?: string; is_public?: boolean; is_secret?: boolean; value_type?: string; } Optional configuration (description, is_public, is_secret, etc.)
options.description? string -
options.is_public? boolean -
options.is_secret? boolean -
options.value_type? string -

Promise<CustomSetting>

Promise resolving to CustomSetting

await client.admin.settings.app.setSetting('billing.tiers', {
free: 1000,
pro: 10000,
enterprise: 100000
}, {
description: 'API quotas per billing tier',
is_public: false
})

update(request): Promise<AppSettings>

Update application settings

Supports partial updates - only provide the fields you want to change.

Parameter Type Description
request UpdateAppSettingsRequest Settings to update (partial update supported)

Promise<AppSettings>

Promise resolving to AppSettings - Updated settings

// Update authentication settings
const updated = await client.admin.settings.app.update({
authentication: {
enable_signup: true,
password_min_length: 12
}
})
// Update multiple categories
await client.admin.settings.app.update({
authentication: { enable_signup: false },
features: { enable_realtime: true },
security: { enable_global_rate_limit: true }
})