The Admin service provides superadmin functionality for managing system configurations, providers, and testing external connections.
Overview
import { SnackBaseClient } from "@snackbase/sdk";
const client = new SnackBaseClient({
baseUrl: "https://api.example.com",
});
// Access the admin service
const admin = client.admin;
All admin operations require superadmin authentication.
Configuration Statistics
Get configuration statistics by category:
const stats = await admin.getConfigurationStats();
// Returns: { email: number, oauth: number, saml: number, ... }
Recent Configurations
Get recently modified configurations:
const recent = await admin.getRecentConfigurations(10);
// Returns array of recently modified configurations
System Configurations
List all system-level configurations:
// Get all system configurations
const configs = await admin.listSystemConfigurations();
// Filter by category
const emailConfigs = await admin.listSystemConfigurations("email");
Account Configurations
List configurations for a specific account:
const configs = await admin.listAccountConfigurations("account-id");
// Filter by category
const oauthConfigs = await admin.listAccountConfigurations("account-id", "oauth");
Configuration Values
Get configuration values (secrets are masked):
const values = await admin.getConfigurationValues("config-id");
// Returns: { provider: "smtp", host: "smtp.example.com", password: "***" }
Update configuration values:
const updated = await admin.updateConfigurationValues("config-id", {
host: "smtp.new-example.com",
port: 587
});
Configuration Status
Enable or disable a configuration:
const config = await admin.updateConfigurationStatus("config-id", false);
Create Configuration
Create a new configuration record:
const config = await admin.createConfiguration({
account_id: "00000000-0000-0000-0000-000000000000",
category: "email",
provider_name: "smtp",
enabled: true
});
Delete Configuration
Delete a configuration:
await admin.deleteConfiguration("config-id");
Providers
List all available provider definitions:
// Get all providers
const providers = await admin.listProviders();
// Filter by category
const emailProviders = await admin.listProviders("email");
Get provider schema:
const schema = await admin.getProviderSchema("email", "smtp");
// Returns JSON schema for SMTP configuration
Test Connection
Test a provider connection before saving:
const result = await admin.testConnection("email", "smtp", {
host: "smtp.example.com",
port: 587,
username: "[email protected]",
password: "secret"
});
// Returns: { success: boolean, message: string, latency_ms?: number }
Complete Example
Setting up a new email configuration:
async function setupEmailProvider() {
// 1. Get the schema to understand required fields
const schema = await admin.getProviderSchema("email", "smtp");
// 2. Test the connection first
const testResult = await admin.testConnection("email", "smtp", {
host: "smtp.gmail.com",
port: 587,
username: "[email protected]",
password: "your-app-password"
});
if (!testResult.success) {
throw new Error(`Connection failed: ${testResult.message}`);
}
// 3. Create the configuration
const config = await admin.createConfiguration({
account_id: "00000000-0000-0000-0000-000000000000",
category: "email",
provider_name: "smtp",
enabled: true
});
// 4. Set the values
await admin.updateConfigurationValues(config.id, {
host: "smtp.gmail.com",
port: 587,
username: "[email protected]",
password: "your-app-password",
use_tls: true
});
return config;
}
Next Steps